在bash中计算数组中的字符串

时间:2014-07-23 07:03:50

标签: arrays bash awk counter

我正在用bash将awk的输出写入数组:

ARR=$(( awk '{print $2}' file.txt ))

想象一下file.txt的内容是:

A B
A B
A C
A D
A C
A B

我想要的是第二列中每个字符串的重复次数,如:

B: 3
C: 2
D: 1

欢迎任何其他解决方案,而不是arraysawk

2 个答案:

答案 0 :(得分:4)

使用awk你可以这样做:

awk '{c[$2]++} END{for (i in c) print i ":", c[i]}' file
B: 3
C: 2
D: 1

答案 1 :(得分:1)

我找到的其他解决方案:

awk '{print $2}' file.txt | sort | uniq -c | sort -nr | while read count name
do
        if [ ${count} -gt 1 ]
        then
                echo "${name} ${count}"
        fi
done