查找并替换47GB大文件中的文本

时间:2011-08-05 05:07:58

标签: command-line replace

我必须在一个相当大的文件上查找和替换任务,大小约为47 GB。

有人知道怎么做吗?我尝试使用TextCrawler,EditpadLite等服务,但没有任何东西支持这个大文件。

我假设这可以通过命令行完成。

你知道如何实现这一目标吗?

7 个答案:

答案 0 :(得分:36)

Sed(用于过滤和转换文本的流编辑器)是您的朋友。

sed -i 's/old text/new text/g' file

Sed在一次传递中执行文本转换。

答案 1 :(得分:30)

我使用FART - 由Lionello Lunesu查找并替换文本。

在Windows 7 x64上运行良好。

您可以使用以下命令查找并替换文本:

fart -c big_filename.txt "find_this_text" "replace_to_this"

答案 2 :(得分:5)

在Unix或Mac上:

sed' s / oldstring / newstring / g' oldfile.txt> newfile.txt

快速而简单......

答案 3 :(得分:0)

对我来说,这里建议的工具都不合适。 Textcrawler吃了我所有电脑的内存,SED根本没用,Editpad抱怨内存......

解决方案是:在python,perl甚至C ++中创建自己的脚本。

或者使用PowerGrep工具,这是最简单,最快捷的选择。

我没有试过放屁,它只是命令行,也许不是很友好 一些十六进制编辑器,如Ultraedit也可以很好地工作。

答案 4 :(得分:0)

我解决了usig问题,之前将其拆分为小文件,每个文件100 MB。

答案 5 :(得分:-1)

如果您使用类Unix系统,那么您可以使用cat | sed这样做

cat hosted_domains.txt | sed s/com/net/g

示例在域名列表中替换com与net,然后您可以将输出通过管道传输到文件。

答案 6 :(得分:-1)

我用过

sed 's/[nN]//g' oldfile.fasta > newfile.fasta

替换7Gb文件中n的所有实例。

如果我省略了> newfile.fasta方面,它会花费很长时间,因为它向上滚动显示文件的每一行。

使用> newfile在ubuntu服务器上运行它只需几秒钟