首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分组GAWK输出

分组GAWK输出
EN

Stack Overflow用户
提问于 2017-08-31 23:42:02
回答 1查看 32关注 0票数 0

Varlog友好地为之前的问题提供了解决方案,该问题着眼于找到感应偶数的相应放电事件并将其从数组中删除。这给我留下了所有尚未卸载到目的地的物品。

此脚本的输出(如下)

代码语言:javascript
复制
/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]
    }
}

输出:

代码语言:javascript
复制
17: CHU207
17: CHU207
35: CHU214
1: CHU001
157: FLY437
115: FLY424
108: FLY321

我想将这些信息归类为以下内容:

代码语言:javascript
复制
CHU207  -  5
CHU001  -  10
FLY437  -   3

我正在考虑使用UNIQ命令,但只是想知道如何将其合并到脚本中,感谢您的帮助

我尝试过使用uniq -c的命令行方法,但不确定这是否是最好的方法。

代码语言:javascript
复制
gawk -f inductedNEW.awk item1.log | uniq -c

感谢您的帮助

菲尔

EN

回答 1

Stack Overflow用户

发布于 2017-09-07 10:50:58

在这里你不需要管道。在您的awk程序中,您拥有所需的一切。

将脚本的结尾部分更改为:

代码语言:javascript
复制
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]
    }
}

如果不需要细节部分,只需将其删除即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45985404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档