- 締切済み
リストファイルに一致する個数のカウントについて
以下にリストファイルと、インプットファイルがあります。 リストファイルのそれぞれにインプットファイルの中で何個一致するかを出力させたいです。 目的にかなうawkや perlなどのスクリプトを教えてほしいです。 list.txt a b c d ・・ input.txt 1 a b c 2 a d 3 4 b c ・・ output.txt a 2 b 2 c 2 d 1 ・・
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- trapezium
- ベストアンサー率62% (276/442)
回答No.3
#2 です。 input.txt 1 a b c 2 a d a 3 ad 4 b c awk 'FNR==NR{a[o[n++]=$1]=0;next} {for (i=1;i<=NF;i++)if ($i in a)a[$i]++} END{for (i=0;i<n;i++)print o[i],a[o[i]]}' list.txt input.txt a 3 b 2 c 2 d 1 少し説明しとくと、a[] が list.txt の連想配列、o[] はその順序、n は行数 最初の FNR ブロックが list.txt に、次の {} が input.txt (以降複数ファイルでも) に対応、NF までの各項目ごとに a[] に一致する単語のカウント
お礼
ありがとうございました。できました