如何计算字符串在列中出现的次数?

时间:2013-02-25 08:47:14

标签: awk

我有3列的文本文件,我想计算第2列中每个字符串的数量。

file1的第二列:

SAM
MATHEW
ALAN
NEELA
JOHN

file2的第二列:

ALAN
NEELA
KAREEM
MOHA

期望的输出:

SAM-1
MATHEW-1
ALAN-2
NEELA-2
JOHN-1
KAREEM-1
MOHA-1

3 个答案:

答案 0 :(得分:2)

$ awk '{a[$2]++}END{for(k in a)print k"-"a[k]}' file1 file2
MOHA-1
NEELA-2
JOHN-1
KAREEM-1
ALAN-2
MATHEW-1
SAM-1

答案 1 :(得分:1)

虽然输出是无序的,但这可以实现它:

awk '{ h[$2]++ } END { for(k in h) print k " - " h[k] }' file1 file2

计数保存在h关联数组中,当处理完所有文件后,结果将打印在END块中。

答案 2 :(得分:0)

awk '{a[$2]++;next}END{for(i in a)print i"-"a[i]}' file1 file2

测试:

> cat file1
10993   item    0
11002   item    6
693661  item    7
> cat file2
10993   item    0
11002   item1   6
693661  item2   7
> awk '{a[$2]++;next}END{for(i in a)print i"-"a[i]}' file1 file2
item1-1
item2-1
item-4
>