Fel*_*ida 6 bash ubuntu command-line sed
我正在尝试使用大型(30G)单行文件执行简单的文字搜索/替换sed
.
我希望这需要一些时间,但是,当我运行它时,它会在几秒后返回,当我查看生成的文件时,它的长度为零.
输入文件有30G
$ ls -lha Full-Text-Tokenized-Single-Line.txt
-rw-rw-r-- 1 ubuntu ubuntu 30G Jun 9 19:51 Full-Text-Tokenized-Single-Line.txt
Run Code Online (Sandbox Code Playgroud)运行命令:
$ sed 's/<unk>/ /g' Full-Text-Tokenized-Single-Line.txt > Full-Text-Tokenized-Single-Line-No-unks.txt
Run Code Online (Sandbox Code Playgroud)输出文件的长度为零!
$ ls -lha Full-Text-Tokenized-Single-Line-No-unks.txt
-rw-rw-r-- 1 ubuntu ubuntu 0 Jun 9 19:52 Full-Text-Tokenized-Single-Line-No-unks.txt
Run Code Online (Sandbox Code Playgroud)我尝试过的事情
's/foo/bar/g'
)代替:不起作用:返回零长度文件.返回码为0
sed版本是(GNU sed)4.2.2
对于像您这样的基于行的编辑器,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
或至少添加最长单词大小以防止单词拆分。
归档时间: |
|
查看次数: |
448 次 |
最近记录: |