🌞
Linux, shell 使用文字をカウント
Linux, shell 使用文字をカウント
2024-03-23
(1).何がしたかったか
- textファイル(文献)で使用されている「字」を
- どのような種類があるか全て出す
- 可能ならば、出現回数もカウントする
(2).結論
- 意外に簡単にできた。
- fold はあかんかった。
- grep でいける
- uniq でいける
(3).環境
- Ubuntu 22.04
(4).試すファイル
UTF-8で
あいうえお
柿食えお
(5).実験1 fold
$ fold -s1 test.txt
....私が死んだ。
foldはマルチバイト考えていないみたいで、1バイトにブチ切って出してくれた。
$ fold -s1 test.txt | head -3
$ fold -s1 test.txt | head -3 | od -Ax -w16 -t x1z
000000 e3 0a 81 0a 82 0a >......<
000006
(6).実験2 grep
GNU grep なら UTF-8 あつかえる。
-
-E
--extended-regexp
で正規表現。一文字マッチか? -
-o
--only-matching
でマッチを表記でいけるか?
$ grep -Eo '.{1}' test.txt
あ
い
う
え
お
柿
食
え
お
一文字ずつ改行してくれた。いけそう。
(6).実験3 grep + uniq
uniq -c
でカウント。
ってことで:
$ grep -Eo '.{1}' test.txt | sort | uniq -c
1 あ
1 い
1 う
2 え
2 お
1 柿
1 食
幸せだ。
(7).他
uniq
の man みると
uniq - report or omit repeated lines
あ、repeated lines が対象なのね。
以上
Discussion