• 締切済み

リストファイルに一致する個数のカウントについて

以下にリストファイルと、インプットファイルがあります。 リストファイルのそれぞれにインプットファイルの中で何個一致するかを出力させたいです。 目的にかなう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 ・・

みんなの回答

  • 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[] に一致する単語のカウント

hiroponsettu
質問者

お礼

ありがとうございました。できました

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.2

特に明記されてないけど、空白区切りの完全一致ということなのかな? それと 2 a d a とかなってたら a のカウントは 2? それとも 1?

hiroponsettu
質問者

補足

カウントするようにしたいです。

  • okwavey2
  • ベストアンサー率15% (251/1593)
回答No.1

あなたが自分で出来るようにアドバイスして欲しいのではなくて、あなたの代わりに無料でやれという事でしょうか。

関連するQ&A