Grep 没有多个图案的输出线

Grep 没有多个图案的输出线,grep,Grep,我使用了cat文件| grep-v“pat1”| grep-v“pat2”|……|grep-v“patN”删除带有任何一组模式的行。看起来很尴尬。有没有更好的(简洁的)方法呢?如果你对awk没问题,你可以试试下面的方法。创建了一个名为valIgnore的变量,该变量包含所有要忽略的值,您可以用逗号分隔的方式提及所有值并将它们包含在其中。通过这样做,您可以在一次快照中仅在变量本身中给出N个关键字。此外,您还可以创建一个shell变量,该变量的所有值都将被忽略(以行为单位),确保其逗号分隔,并将其传

我使用了
cat文件| grep-v“pat1”| grep-v“pat2”|……|grep-v“patN”
删除带有任何一组模式的行。看起来很尴尬。有没有更好的(简洁的)方法呢?

如果你对
awk
没问题,你可以试试下面的方法。创建了一个名为
valIgnore
的变量,该变量包含所有要忽略的值,您可以用逗号分隔的方式提及所有值并将它们包含在其中。通过这样做,您可以在一次快照中仅在变量本身中给出N个关键字。此外,您还可以创建一个shell变量,该变量的所有值都将被忽略(以行为单位),确保其逗号分隔,并将其传递给此处的
awk
程序。因为没有提供样品,所以没有测试,但应该可以工作

awk -v valIgnore="pat1,pat2,pat3,pat4,pat5,pat6,pat7,pat8,pat9" '
BEGIN{
  num=split(valIgnore,arr,",")
  for(i=1;i<=num;i++){ ignoreVals[arr[i]] }
}
{
  for(key in ignoreVals){
     if(index($0,key)){ next }
  }
}
1' Input_file
awk-v valIgnore=“pat1,pat2,pat3,pat4,pat5,pat6,pat7,pat8,pat9”
开始{
num=拆分(valIgnore,arr,“,”)

例如:@Lee,你好,你能告诉我我的答案是否对你有帮助吗?谢谢。