sed-从外部文件中删除采用模式的行

sed-从外部文件中删除采用模式的行

我正在寻找一种方法来删除文件中的某些行,并从外部文件中获取模式。最好的方法是使用 sed。我尝试了几篇文章,像这样,但他们没有回答我的任务。

说我有一个文本文件和:

Adam
Belle
Candy
Donald
Eve

以及模式文件有:

Don*
Candy

grep -fv pattern.file text.file得到了我想要的东西,但只看到了:

Adam
Belle
Eve

我无法将过滤后的输出重定向到新文件。因此,我需要一种方法来修改原始文件文本文件,从外部文件中删除所有与模式匹配的行。

在我的实际用例中文本文件包含非字母顺序,并非总是大写,因此无法为“sed”创建通用正则表达式。

传递从外部文件删除行的模式的最佳方法是什么?

答案1

使用 GNU sed 和 bash:

sed -i -f <(sed 's|.*|/&/d|' pattern.file) text.file

答案2

以你的例子为例,这样做会更容易:

grep -fv pattern.file text.file > output.txt

相关内容