问题
我想在 AWK 脚本中专门使用 AWK(GAWK、MAWK 等)来汇总字段 6 中包含“runner__.jpx”(下划线是两位数字 0-9 的占位符)的每个记录的字段 9 中的值以及字段 7 中的“好”。
样本文件
Feb 14 11:33:16 ringer a[2388]: runner01.jpx good aa 3
Feb 14 11:33:32 ringer a[2388]: runner24.jpx good xx 1
Feb 14 11:33:39 ringer a[1894]: jogger02.jpx good aa 5
Feb 14 11:33:45 ringer a[2388]: runner99.jpx stop cc 1
试图
我怎么能这样做呢?我尝试使用 if 语句,例如:
BEGIN {
sum = 0
}
{
if (($6 == "runner"[0-9][0-9]".jpx") && ($7 == "good"))
sum += $9
}
END {
printf sum
}
有没有办法通过使用 if 语句匹配字段中的字符串来做到这一点?我可以在 if 语句中使用正则表达式吗?有什么替代方法可以做到这一点?谢谢。
答案1
以下应该可以完成这项工作。请注意,您不需要显式的if
s,只需使用 的awk
隐式模式操作模型
awk '$6 ~ /^runner[0-9][0-9]\.jpx$/ && $7 == "good" {s += $9};
END{print s}' input.file