首页 > 解决方案 > 大文件(超过 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但由于某些原因,合并文件的行已损坏。我将不胜感激任何指示或技巧。

更新:

前两行看起来好像是文件头的一部分,但该文件中没有二进制文本文件头。所以我想我很幸运。另一方面,这不是静态文本。每个文件中行的长度和内容不同。

标签: macosunixterminaltext-editorlarge-data

解决方案


结合@shellter 注释和帮助,摆脱非 ASCII 垃圾并获得我想出的所需输出的最简单脚本如下:

gsed -n 'l0' testfile | gsed 's/.*@/@/' |  gsed '1,2d' | gsed 's/[$]//g'

我使用 brew install gnu sed(gsed) 而不是 OSX 的 BSD sed


推荐阅读