如何在awk命令中匹配多个字符串

时间:2016-02-23 11:03:33

标签: string awk comparison

我想匹配打印第10个字段以下面数字开头的日志文件行 。我成功打印了第10个字段。如何打印整行。 总之,我想同时将第10个字段与多个字符串进行比较

tail -f *log|awk -F" " '/Gateway request received for service type Ussd/ {print $10}'|egrep  '254720|254721|254722|254723|254724|254725|254726|254727|254728|254729|254710|254712|254713|254714|254715|254716|254717|254718|254719|254700|254701|254702'.*  

2 个答案:

答案 0 :(得分:0)

tail -f *log|awk '/Gateway (and rest)/ && $10~/254720|2542...and rest/' 

应该这样做。

  • -F" "没有必要
  • grep可以(应该)保存
  • 如果$10完全匹配数字,您可以使用$10>lower-bound && $10<upper-bound代替$10~/regex/

答案 1 :(得分:0)

或许将数字缩减为正则表达式范围将有助于

$ ... | awk '/Gate... etc./ && $10~/25471[02-9]|25472[0-9]|25470[01]/'

或进一步分组

$ ... | awk '/Gate... etc./ && $10~/2547(1[02-9]|2[0-9]|0[01])/'