banner花文字を反転加工してみましょう。
関連記事はコチラ
https://life-is-command.com/linux-command-beginner/
まずは、HELLOの花文字(*)
takk~$ banner HELLO | tr \# \* * * ******* * * ******* * * * * * * * * * * * * * * ******* ***** * * * * * * * * * * * * * * * * * * * * ******* ******* ******* *******
上下反転してみます。
takk~$ banner HELLO | tr \# \* | tac * * ******* ******* ******* ******* * * * * * * * * * * * * * * ******* ***** * * * * * * * * * * * * * * * * * * * * ******* * * *******
次に、左右反転。
takk~$ banner HELLO | tr \# \* | rev ******* * * ******* * * * * * * * * * * * * * * * * * * * * ***** ******* * * * * * * * * * * * * * * ******* ******* ******* ******* * *
では、HELLO以外の文字ではどうでしょうか。
takk~$ banner 1234 | tr \# \* | rev * ***** ***** * * * * * * * ** * * * * * * ******* ***** ***** * * * * * * * * * * * ***** ******* *****
あれ、左右反転していないように見えます。
実はbannerコマンドで表示される文字列は、各行で文字数が異なるため、文字数の少ない行はrevすると左に寄せられて崩れてしまうのです。
行末の位置を
takk~$ banner 1234 | sed 's/$/<CR>/' # ##### ##### #<CR> ## # # # # # #<CR> # # # # # #<CR> # ##### ##### #######<CR> # # # #<CR> # # # # #<CR> ##### ####### ##### #<CR> <CR>
printfを使って各行の文字数を合わせてみます。
takk~$ banner 1234 | tr '\n' '\0' | xargs -0 printf "%-31s<CR>\n" # ##### ##### # <CR> ## # # # # # # <CR> # # # # # # <CR> # ##### ##### #######<CR> # # # # <CR> # # # # # <CR> ##### ####### ##### # <CR> <CR> takk~$
ではrevしてみましょう。
takk~$ banner 1234 | tr '#\n' '*\0' | xargs -0 printf "%-31s\n" | rev * ***** ***** * * * * * * * ** * * * * * * ******* ***** ***** * * * * * * * * * * * ***** ******* ***** takk~$
綺麗に左右反転されました。
trでの改行->ヌル文字置換時に、同時に#->*置換もしています。
コメント