我正在寻找一种方法来删除文件中的某些行,并从外部文件中获取模式。最好的方法是使用 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