質問: ``` ツール:VIM version 7.4.1099 ``` 100万件近いアクセスログの中から特定の文字の出現する回数を集計したいと考えております。 集計したい文字は5000件ほどあり別ファイルとして現在保存しております。 ``` あああ いいい ううう えええ . . . . ``` こんな感じです。 1件ずつ ``` cat access.log | grep あああ | wc -l ``` とやれば一応数は出てくるのですがこれを5000回以上やるのが現実的でないのでシェルで外部ファイルをwhileとかで読み込みながらなんとか出来ないかと考えております。 宜しくお願い致します
回答: 一応確認ですが ・アクセスログファイルは1個(または数個)で100万行ほどある。(access.log) ・検索したい文字列は1行に1文字列の形のファイルがあって5000行ほどある(word.txt) ということで合ってますか? 単にword.txtに対応する行に一致件数を表示するなら次のようになります。 ``` cat word.txt | xargs -n 1 -i@ sh -c "grep @ access.log | wc -l" ``` 検索文字列と一致件数を表示するなら次のようになります。 ``` cat word.txt | xargs -n 1 -i@ grep -o @ access.log | uniq -c ```