我有这个命令:
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
你应该得到你正在寻找的东西。