我必须在一个相当大的文件上执行一些查找和替换任务,大小约为47 GB。查找并替换47GB大文件中的文本
有谁知道如何做到这一点?我尝试使用像TextCrawler,EditpadLite等服务,但没有任何支持这个大文件。
我假设这可以通过命令行完成。
你有什么想法可以实现这一点吗?
我必须在一个相当大的文件上执行一些查找和替换任务,大小约为47 GB。查找并替换47GB大文件中的文本
有谁知道如何做到这一点?我尝试使用像TextCrawler,EditpadLite等服务,但没有任何支持这个大文件。
我假设这可以通过命令行完成。
你有什么想法可以实现这一点吗?
如果您使用的是Unix系统,那么您可以使用cat | sed的做到这一点
cat hosted_domains.txt | sed s/com/net/g
实例替换净COM在域名列表,然后你可以将输出到文件中。
您应该跳过'cat'并改写'sed's/foo/bar/g'FILE'。 –
对于一个初学者的问题,也许还解释说,'/ g'只有当一行中可能出现多次时才需要。很经常,默认行为 - 只替换第一次出现 - 正是你想要的,并且添加'/ g'什么也没有完成,除了可能使它慢一点;或者,在最糟的情况下,是一个错误。 (是的,失去[cat']的无用用法(http://www.iki.fi/era/unix/award.html)。) – tripleee
@tripleee你怎么知道只替换每行的第一次出现是有人想要什么?如果我想替换文本中的某些内容,我通常要替换所有出现的内容。不仅仅是第一行。 –
我使用FART - 查找和替换文字由Lionello Lunesu。
它在Windows 7 x64上运行得非常好。
您可以查找和替换使用此命令文本:
fart -c big_filename.txt "find_this_text" "replace_to_this"
哈哈FART ...很抱歉的评论,但有人不得不说出来! – JDuarteDJ
那个网站很棒 – user1003916
下载没有想到两次。我的意思是,谁不安装一个像屁一样光荣的名字。 –
对我来说没有任何的工具,建议在这里工作得很好。 Textcrawler吃了我所有电脑的内存,SED根本无法工作,Editpad抱怨内存...
解决方法是:在python,perl甚至C++中创建自己的脚本。
或使用PowerGrep工具,这是最简单和最快的选择。
我没有试过放屁,它只是命令行,也许不是很友好。
一些hex编辑器,比如Ultraedit也很好用。
使用UltraEdit替换大文件时,可以在不使用临时文件的情况下使用UltraEdit完成大文件替换,这样可以在不进行撤消录制的情况下进行替换,甚至可以更好地使用文件___中的__Replace *文件/类型*文件名和*目录*指定文件路径(作为例子),并且在UltraEdit中根本不打开文件。请参阅UE论坛[如何快速运行Perl正则表达式将全部替换为大文件?](https://www.ultraedit.com/forums/viewtopic.php?f=8&t=16401)和[查找并替换HEX在文件](https://www.ultraedit.com/forums/viewtopic.php?f=8&t=15990)。 – Mofi
我已经在Ultraedit中禁用临时文件。虽然我不知道“替换文件”选项。 – skan
UltraEdit对于超过1GB的sql文件是一块蛋糕,取代了200k +字符串的出现。 –
在Unix或Mac:
SED的/ oldstring/newstring/G'oldfile.txt> newfile.txt
快速和容易...
Downvote:这复制了2011年的现有答案。 – tripleee
@tripleee可能是。但他只是给出了运行sed的命令。所以+1 – jafarbtech
我不认为复制47GB文件(通过写入新位置)是一个非常明智的想法。 –
使用sed(流的编辑器过滤和转换文本),它可以一次执行文本转换。
sed -i 's/old/new/g' bigfile.txt
我用
sed 's/[nN]//g' oldfile.fasta > newfile.fasta
更换n的所有实例在我的7GB文件。
如果我省略> newfile.fasta
方面,它会花费年龄,因为它向上滚动屏幕会显示文件的每一行。
有了它,跑了几秒钟的事Ubuntu的服务器
你要在32位操作系统上运行这个就
> newfile
? – sarat64位,窗户SE7EN – Shrayas
如果你在64位架构上运行,该文件的大小是不是真正的大问题,除非工具 – sarat