bash – 在大型(30G)单行文件上运行sed会返回空输出
发布时间:2020-12-16 01:37:01 所属栏目:安全 来源:网络整理
导读:我正在尝试使用sed在大型(30G)单行文件上执行简单的文字搜索/替换. 我希望这需要一些时间,但是,当我运行它时,它会在几秒后返回,当我查看生成的文件时,它的长度为零. 输入文件有30G $ls -lha Full-Text-Tokenized-Single-Line.txt -rw-rw-r-- 1 ubuntu ubuntu
我正在尝试使用sed在大型(30G)单行文件上执行简单的文字搜索/替换.
我希望这需要一些时间,但是,当我运行它时,它会在几秒后返回,当我查看生成的文件时,它的长度为零. >输入文件有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 >运行命令: $sed 's/<unk>/ /g' Full-Text-Tokenized-Single-Line.txt > Full-Text-Tokenized-Single-Line-No-unks.txt >输出文件长度为零! $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 我尝试过的事情 >在较短的文件上运行相同的示例:工作 编辑(更多信息) >返回码为0
对于像sed这样的基于行的编辑器,你不能指望它能够工作,因为它的工作单元(记录)是以换行符结束的行.
如果您的文件中有空格(以防止搜索模式分割),则可以使用一个建议 fold -s file_with_one_long_line | sed 's/find/replace/g' | tr -d 'n' > output PS.折叠默认宽度为80,如果您的单词长度超过80,您可以添加-w 1000或至少最长的单词大小以防止单词拆分. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |