🌞

Linux, shell 使用文字をカウント

2024/03/23に公開

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
      1112211

幸せだ。


(7).他

uniq の man みると
uniq - report or omit repeated lines
あ、repeated lines が対象なのね。


以上

Discussion