我有一个文本文件,我想要删除包含以下字词的所有行:facebook
,youtube
,google
,amazon
,dropbox
等
我知道删除包含sed的字符串的行:
sed '/facebook/d' myfile.txt
我不想为每个字符串运行此命令五次,但有没有办法将所有字符串组合成一个命令?
答案 0 :(得分:7)
试试这个:
sed '/facebook\|youtube\|google\|amazon\|dropbox/d' myfile.txt
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