在大型(30G)单行文件上运行sed会返回空输出

Fel*_*ida 6 bash ubuntu command-line sed

我正在尝试使用大型(30G)单行文件执行简单的文字搜索/替换sed.

我希望这需要一些时间,但是,当我运行它时,它会在几秒后返回,当我查看生成的文件时,它的长度为零.

我尝试过的事情

  • 在较短的文件上运行相同的示例:工作
  • 使用-e修饰符:不起作用
  • 转义"<"和">":不起作用
  • 使用简单的模式行('s/foo/bar/g')代替:不起作用:返回零长度文件.

编辑(更多信息)

  • 返回码为0

  • sed版本是(GNU sed)4.2.2

kar*_*kfa 3

对于像您这样的基于行的编辑器,sed您不能指望它能工作,因为它的工作单元(记录)是用换行符终止的行。

如果文件中有空格(以防止搜索模式拆分),一个建议是使用

fold -s file_with_one_long_line | 
sed 's/find/replace/g'          | 
tr -d '\n' > output
Run Code Online (Sandbox Code Playgroud)

附: fold默认宽度为 80,如果单词长度超过 80,您可以添加-w 1000或至少添加最长单词大小以防止单词拆分。