我有一个文本文件,我想删除包含以下单词的所有行:
facebook
、youtube
、google
、amazon
、dropbox
等
我知道用 sed 删除包含字符串的行:
sed '/facebook/d' myfile.txt
我不想为每个字符串运行这个命令五次不同的时间,有没有一种方法可以将所有字符串组合成一个命令?
试试这个:
sed '/facebook\|youtube\|google\|amazon\|dropbox/d' myfile.txt
来自 GNU 的 sed 手册:
regexp1\|regexp2
匹配
或regexp1
。使用括号来使用 复杂的替代正则表达式。匹配过程尝试 从左到右依次选择每个选项,以及第一个 成功则使用。它是一个 GNU 扩展。regexp2
grep -vf wordsToExcludeFile myfile.txt
“wordsToExcludeFile”应包含您不想要的单词,每行一个。
如果您需要将结果保存回同一文件,请将其添加到命令中:
> myfile.new && mv myfile.new myfile.txt
与
awk
awk '!/facebook|youtube|google|amazon|dropbox/' myfile.txt > filtered.txt
使用
grep
删除多个字符串
grep -vE "facebook|youtube|google|amazon|dropbox" file.txt > filtered.txt
使用
grep
删除不区分大小写的字符串
grep -viE "facebook|youtube|google|amazon|dropbox" file.txt > filtered_case_insensitive.txt