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
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
$ 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
出力は順不同ですが、これで達成できます。
awk '{ h[$2]++ } END { for(k in h) print k " - " h[k] }' file1 file2
集計はh
連想配列に保持され、すべてのファイルが処理されると、結果がEND
ブロックに出力されます。
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
>