how to avoid printing lines while matching regex in awk
我使用下面的awk命令在文件中查找特定模式的数目:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | awk -F"" ' seconds[$3]=1; /\[[a-z_]*\] start/{start[$3]++} /\[[a-z_]*\] end/{end[$3]++;sumresptime[$3]+=substr($(NF-1),2)} END { num = asorti(seconds, indices); for (i=1;i<=num;i++) { requests = start[indices[i]] > 0 ? start[indices[i]] : 0; responses = end[indices[i]] > 0 ? end[indices[i]] : 0; avgresptime = end[indices[i]] > 0 ? sumresptime[indices[i]]/end[indices[i]] : 0; print indices[i]""requests"|"responses"|"avgresptime" } }' $logfile |
问题是它正在打印所有与regex匹配的用于计算的行。如何避免在控制台上打印行?
应将第一个表达式
1 | '{ seconds[$3]=1 }' |
此外,如果输入文件中的所有字段都用"任意"空格分隔,则无需指定