最近知ったのだけど、Unicodeには1~12月まで、1日~31日までを一文字で表現する文字が存在している。電報記号というらしい。 知らなかった。電報使ったこと無いし、実際にこういった文字が使われているのかもわからないけど。

以下のコマンドで一覧を出力してみる。

zsh -c "echo {$'\U32C0'..$'\U32CB'}"
zsh -c "echo {$'\U33E0'..$'\U33FE'}"
blacknon@BS-PUB-UBUNTU-01:~$ zsh -c "echo {$'\U32C0'..$'\U32CB'}"
㋀ ㋁ ㋂ ㋃ ㋄ ㋅ ㋆ ㋇ ㋈ ㋉ ㋊ ㋋
blacknon@BS-PUB-UBUNTU-01:~$ zsh -c "echo {$'\U33E0'..$'\U33FE'}"
㏠ ㏡ ㏢ ㏣ ㏤ ㏥ ㏦ ㏧ ㏨ ㏩ ㏪ ㏫ ㏬ ㏭ ㏮ ㏯ ㏰ ㏱ ㏲ ㏳ ㏴ ㏵ ㏶ ㏷ ㏸ ㏹ ㏺ ㏻ ㏼ ㏽ ㏾

じゃあ、この文字を使ってdateコマンドの出力を変換してみよう。 ちょっと汚いけど、以下のようにコマンドを実行することで無理やり変換ができる。

date +%m月%d日|sed -r 's/([0-9]{2})月/"\\U$(([##16]12992+\1-1))"/;s/([0-9]{2})日/"\\U$(([##16]13280+\1-1))"/;s/^/echo /'|zsh
blacknon@BS-PUB-UBUNTU-01:~$ date +%m月%d日|sed -r 's/([0-9]{2})月/"\\U$(([##16]12992+\1-1))"/;s/([0-9]{2})日/"\\U$(([##16]13280+\1-1))"/;s/^/echo /'|zsh
㋂㏸

UNICODE、いろんな文字が用意されているんだなぁ…(´・ω・`)。