删除包含多个字符串之一的行

时间:2013-06-11 17:14:39

标签: bash text sed

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

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

sed '/facebook/d' myfile.txt

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

3 个答案:

答案 0 :(得分:7)

试试这个:

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

来自GNU's sed manual

  

regexp1\|regexp2

     

匹配 regexp1 regexp2 。使用括号来使用   复杂的替代正则表达式匹配过程尝试   每个选择轮流,从左到右,第一个   使用成功。它是GNU扩展。

答案 1 :(得分:7)

grep -vf wordsToExcludeFile myfile.txt

“wordsToExcludeFile”应包含您不想要的单词,每行一个。

如果需要将结果保存回同一文件,请将其添加到命令:

 > myfile.new && mv myfile.new myfile.txt

答案 2 :(得分:4)

使用awk

awk '!/facebook|youtube|google|amazon|dropbox/' myfile.txt > filtered.txt