有谁知道基于非行的工具以某种内存有效的方式“二进制”搜索/替换字符串?也看到这个问题。
我有一个+ 2GB的文本文件,我想对其进行处理,类似于此操作:
sed -e 's/>\n/>/g'
这意味着,我想删除a之后出现的所有换行符>
,但不能在其他地方删除,以便排除tr -d
。
此命令(我从类似问题的答案中得到)失败,并带有couldn't re-allocate memory
:
sed --unbuffered ':a;N;$!ba;s/>\n/>/g'
那么,还有其他方法不求助于C吗?我讨厌perl,但愿意在这种情况下例外:-)
我不确定数据中是否会出现任何字符,因此\n
,如果可能的话,我想避免用另一个字符临时替换。
有什么好主意吗?
--unbuffered
内存用完
$!
办?
$!
是什么。我预计这将需要很多内存。
sed
在这种情况下不是合适的工具。
--unbuffered
吗?