从文本文件中删除与文本文件上的多个正则表达式匹配的行

从文本文件中删除与文本文件上的多个正则表达式匹配的行

假设我有文件A.txt看起来有点像这样:

43287134, string1, string2
1233, foo, bar
973, barfoo, foobar
7464, asdf, ghjk

我有文件B.txt使用这些正则表达式,用一行分隔:

^973,
^1233,

我想要申请文件B.txt正则表达式到文件A.txt,并删除匹配的行,以便最终结果为:

43287134, string1, string2
7464, asdf, ghjk

有没有可用的工具来执行此操作?谢谢!

答案1

这正是grep设计的目的:

grep -v -f FileB.txt FileA.txt
  • -f <filename>从文件中读取正则表达式(而不是命令行)
  • -v反转匹配(打印不匹配的行)

输出:

43287134, string1, string2
7464, asdf, ghjk

答案2

这也可以通过以下方式完成sed

while read -r REG_EX; do sed -i "/$REG_EX/d" FileA.txt; done<FileB.txt

相关内容