如何读取文件A中的每一行/字符串,并在文件B中找到包含该字符串的行并在ubuntu中删除它

时间:2015-02-24 06:57:23

标签: ubuntu sed

我知道如何在文件中搜索字符串,并使用sed删除包含字符串的行。

sed -i '/pattern/d' ./file

但是我需要找到很多字符串,有没有办法让它自动化?例如,从文件A中逐行读取字符串,并将其作为变量传递给sed,以便sed可以找到包含字符串的行并删除它?

感谢。

2 个答案:

答案 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