我知道如何在文件中搜索字符串,并使用sed删除包含字符串的行。
sed -i '/pattern/d' ./file
但是我需要找到很多字符串,有没有办法让它自动化?例如,从文件A中逐行读取字符串,并将其作为变量传递给sed,以便sed可以找到包含字符串的行并删除它?
感谢。
答案 0 :(得分:0)
您可以将命令替换与sed
的{{1}}结合使用:
-f
但除非您知道您的模式不包含$ cat file
one two foo
bar three four
qux
quux
blah
blupp
$ cat exclude
foo
bar
^qu
$ sed -i -f <(sed 's#\(.*\)#/\1/d#g' exclude) file
$ cat file
blah
blupp
解释的字符,否则这不是很强大。
更好:只需将sed
与临时文件一起使用:
grep
答案 1 :(得分:0)
您可以使用grep
完成此操作。
有关详细信息,请参阅man grep
(查找-v
和-f
选项)
<强>示例:强>
$ cat File1
Line with pattern1
Line with jskjdksdjk
Line with ioweuwue
Line with pattern2
Line with sydsudsd
$ cat File2
pattern1
pattern2
$ grep -vf File2 File1
Line with jskjdksdjk
Line with ioweuwue
Line with sydsudsd
替换相同的文件(File1
),grep -vf File2 File1 > tmp && mv tmp File1