gpt4 book ai didi

awk - 如何使用 awk 打印存储在数组中的值的计数?

转载 作者:行者123 更新时间:2023-12-04 21:41:59 26 4
gpt4 key购买 nike

我有这个示例文件 -

$cat f
a a1
a a2
a a3
b b1
b b2
b b3
b b4
c c1
c c2
c c3

并排打印我在下面使用的公共(public)栏的记录 -

$awk '{a[$1]=a[$1]OFS$2} END {for (k in a) print k ,a[k]}' f
a a1 a2 a3
b b1 b2 b3 b4
c c1 c2 c3

如何在单个命令中实现以下输出,其中最后一列是公共(public)列的记录数。

a  a1 a2 a3 3 
b b1 b2 b3 b4 4
c c1 c2 c3 3

我们可以结合两个命令来实现这个 -

$awk '{a[$1]=a[$1]OFS$2} END {for (k in a) print k ,a[k]}' f|awk '{print $0, NF-1}'
a a1 a2 a3 3
b b1 b2 b3 b4 4
c c1 c2 c3 3

最佳答案

一种方法是使用 gsub 的返回值 - 它返回所做的替换数

$ awk '{a[$1]=a[$1]OFS$2}
END {for (k in a) print k a[k], gsub(OFS, OFS, a[k])}' ip.txt
a a1 a2 a3 3
b b1 b2 b3 b4 4
c c1 c2 c3 3

注意:我还删除了 k a[k] 之间的 , - 否则第一列和第二列之间会有两个空格

关于awk - 如何使用 awk 打印存储在数组中的值的计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50292840/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com