8 grep sed text-processing text
我有一个包含单词列表的文件。我想从大文本文件中删除此文件中所有出现的所有单词。
例子:
文件 1
queen
king
Run Code Online (Sandbox Code Playgroud)
文本文件示例
Both the king and queen are monarchs. Will the queen live? Queen, it is!
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的:
sed -i 's/queen/ /g' page.txt
sed -i 's/Queen/ /g' page.txt
Run Code Online (Sandbox Code Playgroud)
输出
Both the and are monarchs. Will the live? , it is!
Run Code Online (Sandbox Code Playgroud)
我的单词列表很大(超过 50000 个单词)。如何在不必在命令行中指定模式的情况下执行此操作?
对于您的实际用例,我建议使用 Perl 的 terdon 答案。
然而,不处理作为其他词的子字符串的词(例如,从“hiking”中删除“king”)的简单版本是使用一个 Sed 命令来生成由实际文件上的不同 Sed 实例运行的命令。
在这种情况下,wordfile包含“king”和“queen”并textfile包含您的文本:
sed -e "$(sed 's:.*:s/&//ig:' wordfile)" textfile
Run Code Online (Sandbox Code Playgroud)
请注意,“i忽略大小写”标志是 GNU 扩展,而不是标准。