端末でファイル内の単語の文字数を数える簡単な方法はありますか?

端末でファイル内の単語の文字数を数える簡単な方法はありますか?

私のファイルには1億行があります。

1行につき1列しかありません。

例えば

aaaaa
bb
cc
ddddddd
ee

文字数を一覧表示したいです。

このように

2 character words - 3
5 character words - 1
7 character words - 1

など。

端末で簡単にできる方法はありますか?

ベストアンサー1

$ awk '{ print length }' file | sort -n | uniq -c | awk '{ printf("%d character words: %d\n", $2, $1) }'
2 character words: 3
5 character words: 1
7 character words: 1

最初のawkフィルタは、名前付きファイルの各行の長さのみを印刷しますfile。ファイルには1行に1語が含まれているとします。

sort -n出力の行を昇順に並べ替える)と(各行の連続発生回数を計算)は、指定したデータに対して次の出力を生成します。awkuniq -c

   3 2
   1 5
   1 7

awk次に、各行を「Y文字のX行」として解釈し、目的の出力を生成する2番目のスクリプトによって解析されます。


awk別の解決策は、すべての操作を配列として実行し、長さの数を保存することです。効率性、読みやすさ/理解しやすさ(およびメンテナンスの容易さ)のバランスをとることで、どのソリューションが「最高」なのかです。

代替ソリューション:

$ awk '{ len[length]++ } END { for (i in len) printf("%d character words: %d\n", i, len[i]) }' file
2 character words: 3
5 character words: 1
7 character words: 1

おすすめ記事