0

3 列のテキスト ファイルがあり、列 2 に表示される各文字列の数をカウントしたいと考えています。

file1 の 2 列目:

SAM
MATHEW
ALAN
NEELA
JOHN

file2 の 2 列目:

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 に答える