macos - 大文件(超过 10GB)的 OSX 终端文本编辑技巧
问题描述
我有 10-50GB 的文本文件。我需要编辑这些文件的前几行,如下所示;
原来的;
>Aura head -n 2 042319_S6_L001_R1_001.fastq.recovered
==> 042319_S6_L001_R1_001.fastq.recovered <==
9�C�{a��e�T�l1�{jz7?\^tZ[1�Wvcb���]zj�\,����~
zT'zT'zT'zT'zT'zT'zT'zT'zT'zT'zTfŌȊ���@hYM�rkdt�t?��av��B�,KII9]�Hϛ�[�ada[�SY�o��|>K�H���k��%���'
�LDTM&Ãd�XQ@A00165:69:HKJ3YDMXX:1:1101:4390:1266 1:N:0:CATGAACA
AGTTAGCTCACCATGATGAAACAAGACT
+
FFFFFFFFFFFFFFFFFFFFFFFFFFFF
@A00165:69:HKJ3YDMXX:1:1101:4896:1266 1:N:0:CATGAACA
TATCTTGTCACGATACTCAACATGTGGA
+
FFFFFFFFFFF:FFFFFFFFFFF:FFFF
@A00165:69:HKJ3YDMXX:1:1101:6307:1266 1:N:0:CATGAACA
期望的输出;
>Aura head -n 2 042319_S6_L001_R1_001.fastq.recovered
==> 042319_S6_L001_R1_001.fastq.recovered <==
@A00165:69:HKJ3YDMXX:1:1101:4390:1266 1:N:0:CATGAACA
AGTTAGCTCACCATGATGAAACAAGACT
+
FFFFFFFFFFFFFFFFFFFFFFFFFFFF
@A00165:69:HKJ3YDMXX:1:1101:4896:1266 1:N:0:CATGAACA
TATCTTGTCACGATACTCAACATGTGGA
+
FFFFFFFFFFF:FFFFFFFFFFF:FFFF
@A00165:69:HKJ3YDMXX:1:1101:6307:1266 1:N:0:CATGAACA
我尝试通过 nano 执行此操作,但加载整个 GB 文件需要很长时间。我厌倦了拆分文件,split
但由于某些原因,合并文件的行已损坏。我将不胜感激任何指示或技巧。
更新:
前两行看起来好像是文件头的一部分,但该文件中没有二进制文本文件头。所以我想我很幸运。另一方面,这不是静态文本。每个文件中行的长度和内容不同。
解决方案
结合@shellter 注释和帮助,摆脱非 ASCII 垃圾并获得我想出的所需输出的最简单脚本如下:
gsed -n 'l0' testfile | gsed 's/.*@/@/' | gsed '1,2d' | gsed 's/[$]//g'
我使用 brew install gnu sed
(gsed) 而不是 OSX 的 BSD sed
。
推荐阅读
- python - Python Pandas 将数值从上面替换为最接近的非数字
- c# - 类字段中类名的目的?
- apache-spark - spark 下推过滤器如何与 cassandra 表非分区键一起使用?
- wpf - WPF 隐藏 ItemsControl 的第一项(组合框、文本框等)
- mongodb - 如何使用 Spring Data MongoDB 搜索嵌套在数组中的对象列表?
- python - 在处理双端队列时接收 UDP 消息
- pandas - 使用 pandas 进行断言式编程
- shiro - 使用加密数据的 Apache Shiro 身份验证
- ruby-on-rails - 从多个模型中查询值
- html - 通过将数据从一个控制器传递到另一个控制器来触发预览模式