如何编辑300 GB文本文件(基因组数据)?

Kei*_*son 5 linux text r edit genetics

我有一个300 GB的文本文件,其中包含超过250k记录的基因组数据.有些记录包含不良数据,我们的基因组程序'Popoolution'允许我们用星号注释掉"坏"记录.我们的问题是我们找不到将加载数据的文本编辑器,以便我们可以注释掉不良记录.有什么建议?我们有Windows和Linux盒子.

更新:更多信息

Popoolution程序(https://code.google.com/p/popoolation/)在达到"错误"记录时崩溃,向我们提供我们可以注释掉的行号.具体来说,我们从Perl收到一条消息,上面写着"F#€%&Scaffolding".手册建议我们可以使用星号来注释坏线.可悲的是,我们必须多次重复这个过程......

还有一个想法......是否有一种方法可以让我们在不打开整个文本文件的情况下将星号添加到行中.鉴于我们必须重复该过程未知次数,这可能非常有用.

fed*_*qui 11

根据您的更新:

还有一个想法......是否有一种方法可以让我们在不打开整个文本文件的情况下将星号添加到行中.鉴于我们必须重复该过程未知次数,这可能非常有用.

在这里你有一个方法:如果你知道行号,你可以在该行的开头添加一个星号说:

sed 'LINE_NUMBER s/^/*/' file
Run Code Online (Sandbox Code Playgroud)

看一个例子:

$ cat file
aa
bb
cc
dd
ee
$ sed '3 s/^/*/' file
aa
bb
*cc
dd
ee
Run Code Online (Sandbox Code Playgroud)

如果添加-i,文件将更新:

$ sed -i '3 s/^/*/' file
$ cat file
aa
bb
*cc
dd
ee
Run Code Online (Sandbox Code Playgroud)

即使我一直认为重定向到另一个文件更好

sed '3 s/^/*/' file > new_file
Run Code Online (Sandbox Code Playgroud)

这样您就可以保留原始文件的完整性并保存更新的文件new_file.


Mar*_* K. 6

如果您需要让某人使用文本编辑器手动标记这些记录,无论出于何种原因,您应该使用split将文件拆分为可管理的部分.

split -a4 -d -l100000 hugefile.txt part.
Run Code Online (Sandbox Code Playgroud)

这会将文件分成多个,每个包含100000行.文件的名称将是part.0000,part.0001等.然后,在编辑完所有文件后,您可以将它们组合在一起cat:

cat part.* > new_hugefile.txt
Run Code Online (Sandbox Code Playgroud)