Varlog慷慨地提出了解决之前问题的解决方案,该解决方案甚至将相应的DISCHARGE事件发送到INDUCT并从数组中删除它。这给我留下了所有尚未到达目的地的物品。
此脚本的输出(如下)
/REDIRECT_ITEM_REPLY/ {
match($0, /itemId=<([^>]+)>/, ary1)
match($0, /CscdestinationId=<([^>]+)>/, ary2)
dest[ary1[1]] = ary2[1]
}
/DISCHARGE_VERIFIED/ {
match($0, /itemId=<([^>]+)>/, ary1)
delete dest[ary1[1]]
}
END {
for (id in dest) {
print dest[id]
}
}
输出:
17: CHU207
17: CHU207
35: CHU214
1: CHU001
157: FLY437
115: FLY424
108: FLY321
我想把这些信息归结为:
CHU207 - 5
CHU001 - 10
FLY437 - 3
我正在考虑使用UNIQ命令,但只是想知道如何将其合并到脚本中,感谢您的帮助
我尝试过使用uniq -c的命令行方法,但不确定这是否是最好的方法
gawk -f inductedNEW.awk item1.log | uniq -c
感谢您的帮助
菲尔
答案 0 :(得分:0)
这里不需要管道。您拥有awk程序中所需的一切。
将脚本的END部分更改为:
END {
print "Detail:"
for (id in dest) {
print dest[id]
group=dest[id]; # group = "123: ABC"
sub(/^[0-9]+: */, "", group); # group = "ABC"
groupCounter[group]++; # counter++
}
print "Grouped:"
for(group in groupCounter) {
print group " - " groupCounter[group]
}
}
如果您不需要细节部分,只需将其删除即可。