9

我有一个文本文件,我想删除所有包含以下单词的行:facebookyoutubegoogleamazondropbox等。

我知道用 sed 删除包含字符串的行:

sed '/facebook/d' myfile.txt

我不想为每个字符串运行五次不同的命令,有没有办法将所有字符串组合成一个命令?

4

3 回答 3

13

尝试这个:

sed '/facebook\|youtube\|google\|amazon\|dropbox/d' myfile.txt

来自GNU 的 sed 手册

regexp1\|regexp2

匹配regexp1regexp2。使用括号来使用复杂的替代正则表达式。匹配过程从左到右依次尝试每个备选方案,并使用第一个成功的备选方案。它是一个 GNU 扩展。

于 2013-06-11T17:16:17.190 回答
8
grep -vf wordsToExcludeFile myfile.txt

"wordsToExcludeFile" should contain the words you don't want, one per line.

If you need to save the result back to the same file, then add this to the command:

 > myfile.new && mv myfile.new myfile.txt
于 2013-06-11T17:37:12.980 回答
6

awk

awk '!/facebook|youtube|google|amazon|dropbox/' myfile.txt > filtered.txt
于 2013-06-11T17:39:52.023 回答