0

我有 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
4

3 回答 3

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
于 2013-02-25T08:51:31.710 回答
1

这将完成它,尽管输出是无序的:

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

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

于 2013-02-25T08:51:09.133 回答
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
> 
于 2013-02-25T08:51:45.437 回答