Linux控制台perl替换不能处理大文件

时间:2016-10-21 16:45:40

标签: regex perl ubuntu replace

在ubuntu上,我在~500MB的csv文件上运行一个控制台perl替换。这是电话:

perl -i -pe 's/AS100\n/AS100/g' test.csv 

在完整文件上运行之前,我提取了大约30MB的子集并成功运行该脚本。

在完整文件上运行时,不会进行替换,也不会显示错误或消息。

我也尝试使用sed,但行为是一样的。

我该如何解决这个问题?

谢谢

2 个答案:

答案 0 :(得分:0)

如果你有空间,请尝试这样做以查看替换,因为它是对另一个文件所做的:

    perl -pe 's/AS100\n/AS100/g' test.csv | tee > test2.csv

我的问题是,是否只有以AS100结尾的行需要删除新行?

答案 1 :(得分:0)

在尝试了所有内容之后,我发现原始文件中的模式是:

As100\r

并且 \ n 是Sublime Text在保存测试文件时完成的转换。

所以正确的代码就是:

perl -i -pe 's/AS100\r/AS100/g' test.csv