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

gra*_*ber 6 text-processing regular-expression

假设我有FileA.txt,它看起来有点像这样:

43287134, string1, string2
1233, foo, bar
973, barfoo, foobar
7464, asdf, ghjk
Run Code Online (Sandbox Code Playgroud)

我有带有这些正则表达式的FileB.txt,用一行分隔:

^973,
^1233,
Run Code Online (Sandbox Code Playgroud)

我想申请FileB.txt正则表达式到FileA.txt,并删除线相匹配的,这样最终的结果将是:

43287134, string1, string2
7464, asdf, ghjk
Run Code Online (Sandbox Code Playgroud)

有没有可用的工具来做到这一点?谢谢!

jim*_*mij 11

这正是grep专为以下目的而设计的:

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

输出:

43287134, string1, string2
7464, asdf, ghjk
Run Code Online (Sandbox Code Playgroud)