grepを使用してディレクトリ内のすべてのファイルですべての単語の発生回数を計算する方法は?ただし、単語ごとの数はファイルごとに1回だけ増加します。

grepを使用してディレクトリ内のすべてのファイルですべての単語の発生回数を計算する方法は?ただし、単語ごとの数はファイルごとに1回だけ増加します。

同様の質問をしましたが、人々は私の質問を誤解しました。単語数は、ファイルごとの単語ごとに一度だけ増加して、各単語のリストを生成する方法を尋ねます。

たとえば、10個のファイルを含むディレクトリがあり、bashコマンドを使用してファイルに表示される単語の数に応じて、1から10の値を持つ単語のリストを生成しようとします。

10 The
10 and
8 bash
7 command
6 help....

など。

私はすでに単一の単語を検索していることを知っていますが、grep -l word *| wc -lすべての単語のリストを作成したいと思います。

tr '[A-Z]' '[a-z]' | tr -d '[:punct:]'大文字で単語を繰り返すことなく句読点を削除することと組み合わせる方法はありますか?

ベストアンサー1

ここではPerlを使います。

perl -T -lne '
  for (/\w+/g) {$count{lc $_}->{$ARGV}=undef}
  END {print "$_: " . keys %{$count{$_}} for keys %count}' ./*

$count{word}これは、キーが見つかったファイルの名前であるハッシュへの参照であるハッシュを構成しますword(そして私たちが気にしない値はここに設定されますundef)。

最後に、各ハッシュ(つまり、見つかった各単語)の要素数(つまりファイル数)のみを計算します。

おすすめ記事