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,你好,你能告诉我我的答案是否对你有帮助吗?谢谢。