(Linux)bannerコマンドでTrick or Treat

4-3.文字列置換

アニメ『パンプキン・シザーズ』(2006~2007)
ランデルは戦車相手に肉弾戦で勝ってしまいます。それがこのアニメを見てて面白かったところです。まあ先日『ベルセルク』を視聴したばかりなので、戦っている時のランデルがガッツみたいに感じたりしますけど。まだ視聴途中ですが全体のストーリーがよくわからず、視聴断念しそうです。何度も見ればわかってくるのでしょうか。
パンプキンといえば、近所のデパートで、もうハロウィンコーナーを見かけました。気が早いですねえ。と油断してたら、クリスマス、大晦日と、一年あっという間だった、となるのでしょうね。

banner-001
今回は、上の画像のように、bannerを仮装させたいと思います。
bannerコマンドを使った遊びとしては、過去に「text in sysvbanner(バナーコマンド遊び)」「cutで暗号解読?rubyのzipを使った文字列合成」「花文字バナーをHTMLへ」でも取り上げましたが、まだまだbannerで遊べそうです。
では、まず普通にbannerコマンドを使ってみます。

takk@takk:~/test$ banner HALLOWEEN
#     #    #    #       #       ####### #     # ####### ####### #     #
#     #   # #   #       #       #     # #  #  # #       #       ##    #
#     #  #   #  #       #       #     # #  #  # #       #       # #   #
####### #     # #       #       #     # #  #  # #####   #####   #  #  #
#     # ####### #       #       #     # #  #  # #       #       #   # #
#     # #     # #       #       #     # #  #  # #       #       #    ##
#     # #     # ####### ####### #######  ## ##  ####### ####### #     #

takk@takk:~/test$ 

全部#で表示されました。

trでキャラクタをすり替えてみます。

takk@takk:~/test$ banner HALLOWEEN | tr \# H
H     H    H    H       H       HHHHHHH H     H HHHHHHH HHHHHHH H     H
H     H   H H   H       H       H     H H  H  H H       H       HH    H
H     H  H   H  H       H       H     H H  H  H H       H       H H   H
HHHHHHH H     H H       H       H     H H  H  H HHHHH   HHHHH   H  H  H
H     H HHHHHHH H       H       H     H H  H  H H       H       H   H H
H     H H     H H       H       H     H H  H  H H       H       H    HH
H     H H     H HHHHHHH HHHHHHH HHHHHHH  HH HH  HHHHHHH HHHHHHH H     H

takk@takk:~/test$ 

全部変わってしまいましたね。
どうやったら一文字ずつ置換できるでしょうか。文字通り「一文字ずつ」分割してみます。

takk@takk:~/test$ grep -o "." <<< HALLOWEEN
H
A
L
L
O
W
E
E
N
takk@takk:~/test$ 

一文字ずつ分割したら、それをforで回します。

takk@takk:~/test$ for i in `grep -o "." <<< HALLOWEEN`;do
> banner $i
> done
#     #
#     #
#     #
#######
#     #
#     #
#     #

   #
  # #
 #   #
#     #
#######
#     #
#     #

#
#
#
#
#
#
#######

#
#
#
#
#
#
#######

#######
#     #
#     #
#     #
#     #
#     #
#######

#     #
#  #  #
#  #  #
#  #  #
#  #  #
#  #  #
 ## ##

#######
#
#
#####
#
#
#######

#######
#
#
#####
#
#
#######

#     #
##    #
# #   #
#  #  #
#   # #
#    ##
#     #

takk@takk:~/test$ 

ここまでできたら、後はちょこちょこ加工すれば良いです。

できあがり。

~$ cat banner
#!/bin/bash
for i in `grep -o "." <<< $1`;do
        /usr/bin/banner $i | tr \# $i
done | pr -t${#1}

bannerという名前で作ったので、実行権限を付与し、PATHで$PWDが最初に検索されるようにしています。

takk@takk:~/test$ ls -l
合計 4
-rwxr-xr-x 1 takk takk 95  9月  7 22:08 banner
takk@takk:~/test$ echo $PATH | tr : \\n | head -2
/home/takk/test
/usr/local/sbin
takk@takk:~/test$ 

コメント

タイトルとURLをコピーしました