ふと思い立ったので、ターミナル上でファイルから頻出しているキーワード(スペース区切り)・文字を取得させてみることにする。 特に難しいことはなく、以下のように簡単に行える。

1. スペース区切りの頻出キーワードを抽出する

スペース区切りの頻出キーワードを抽出する場合は、以下のようにする。

コマンド | sed 's/ /\n/g;s/\t/\n/g' | grep -v ^$ | sort | uniq -c | sort -nr | head -20

例として、lsのmanの内容で抽出した結果が以下。

blacknon@BS-PUB-UBUNTU-01:~$ man ls | col | sed 's/ /\n/g;s/\t/\n/g' | grep -v ^$ | sort | uniq -c | sort -nr | head -20
     20 of
     17 by
     16 with
     15 to
     15 list
     14 and
     13 the
     12 sort
     12 not
     12 is
     10 or
     10 entries
     10 do
      9 print
      9 file
      8 if
      8 for
      8 a
      8 -l,
      6 use

2. 頻出文字を抽出する

頻出キーワードでなく、頻出文字を抽出する場合。 以下のようにコマンドを実行する。

コマンド | grep -o . | grep -v "^\s*$" | sort | uniq -c | sort -k1nr | head
blacknon@BS-PUB-UBUNTU-01:~$ man ls | col | grep -o . | grep -v "^\s*$" | sort | uniq -c | sort -k1nr | head
    464 e
    401 t
    367 i
    341 o
    320 s
    291 n
    272 r
    244 a
    240 l
    229 -

最もよく使われるアルファベットは e だと言われているので、まぁまぁ納得のできる結果が返ってきたようだ。