シェル芸で文字列を斜めに表示・変換する

コンソール上で文字列を斜めに表示させたいなと思ったので、やってみることにした。
想定ではもっと簡単、かつ短く記述できると思っていたのだけど、意外とそうでもなかった。

とりあえずawkでやった場合。grepで一度各文字を1行づつに出力し直している。

echo qwerty | grep -o . | awk '{printf("%0"NR"s\n",""$1)}'
[root@BS-PUB-CENT7-01 ~]# echo qwerty | grep -o . | awk '{printf("%0"NR"s\n",""$1)}'
q
w
e
r
t
y

 

awkよりはperlを使った方が、後から読んだ時に分かりやすく記述できる(気がする)。

echo qwerty | grep -o . | perl -lne 'print " " x ($.-1),$_'
[root@BS-PUB-CENT7-01 ~]# echo qwerty | grep -o . | perl -lne 'print " " x ($.-1),$_'
q
w
e
r
t
y
Sponsored Links

jqを使う場合、grepの箇所を省略して記述できる。

echo qwerty | jq -Rr 'range(length)as$r|. as$i|" "*$r|.+$i[$r:$r+1]'
[root@BS-PUB-CENT7-01 ~]# echo qwerty | jq -Rr 'range(length)as$r|. as$i|" "*$r|.+$i[$r:$r+1]'
q
w
e
r
t
y

 

なお、@ebanさんはこれより更に短くしている(awk/perlのやつより短い)。
一度jsonで配列にしてから処理しているようだ。

 


Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

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

*