grep 到文件以排除内容

grep 到文件以排除内容

我有这个命令:

grep -Pvi ".(\.var|\.foo|\.varfoo)$" myfile.txt > newfile.txt

注意:.var、.foo 和 .varfoo(以及许多其他)是 myfile.txt 中的行。

我的文件.txt:

.var
.foo
.varfoo
.xxx.var
.yyy.foo
.zzz.varfoo

该命令运行良好并执行其必须执行的操作(删除任何以 .var、.foo、.varfoo 结尾的行,但保留这 3 个)。执行命令后:

新文件.txt

.var
.foo
.varfoo

现在,我需要将 .var、.foo、.varfoo 放入“greplist.txt”中,以避免将它们放入命令中,以便“grep”读取它:

greplist.txt

.var
.foo
.varfoo

我该怎么做?

答案1

这里有两个挑战:

  • -P只支持单一模式
  • 文件中的每一行都必须是完整的模式,而不仅仅是文本本身

所以如果你设置greplist.txt

.\.var$
.\.foo$
.\.varfoo$

然后跑

grep -vi -f greplist.txt myfile.txt > newfile.txt

你应该得到你正在寻找的东西。

相关内容