シェル芸で指定した日の月・日をUnicodeの一文字に変換して表示させる
Pocket

最近知ったのだけど、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'}"
㏠ ㏡ ㏢ ㏣ ㏤ ㏥ ㏦ ㏧ ㏨ ㏩ ㏪ ㏫ ㏬ ㏭ ㏮ ㏯ ㏰ ㏱ ㏲ ㏳ ㏴ ㏵ ㏶ ㏷ ㏸ ㏹ ㏺ ㏻ ㏼ ㏽ ㏾
Sponsored Links

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

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

 

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

 

Pocket

Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

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

*