締切済み

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

  • 困ってます
  • 質問No.9543172
  • 閲覧数96
  • ありがとう数2
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 22% (2/9)

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

  • 回答No.3

ベストアンサー率 62% (260/415)

#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

お礼率 22% (2/9)

ありがとうございました。できました
投稿日時 - 2018-10-03 11:11:06
  • 回答No.2

ベストアンサー率 62% (260/415)

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

お礼率 22% (2/9)

カウントするようにしたいです。
投稿日時 - 2018-10-02 14:47:43
  • 回答No.1

ベストアンサー率 16% (195/1215)

あなたが自分で出来るようにアドバイスして欲しいのではなくて、あなたの代わりに無料でやれという事でしょうか。
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

ピックアップ

ページ先頭へ