ターミナル上で文章から頻出キーワード(or文字)を取得する

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

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
Sponsored Links

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だと言われているので、まぁまぁ納得のできる結果が返ってきたようだ。

 


Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*