Category Archives: 4-4.バイナリ置換

sysvbannerでハングル


韓国ドラマ『彼女はキレイだった』

韓ドラにハマりそうです。子供の頃は美人でお嬢様だったヘジンは、大人になって不美人に、ヘジンの初恋の幼馴染の男の子は、子供の頃は太っちょ、大人になってイケメンに。大人になった二人は再会します。
ここまでは何が面白いのかよく分からなかったのですが、ヘジンは自分の容姿がコンプレックスで、超美人の友人を代役にしてしまうんです。イケメン幼馴染もまったく疑わず、ヘジンだと思っている友人にプレゼントまで贈ってしまう始末。面白要素来ました、先が読めるけども。二人の約束の絵画パズルの重要ピースに描かれた脇役と、ヘジンが重なって、なかなか素敵な演出。まあ、先が読めて仕方はないですが、面白いんです。結末は決まり切ってるけども、先が気になります。これが韓流の魅力なんだろうか。やみつきになります。ハングルの勉強もしたいし、全話見ようと思います。

前回はsysvbannerを直接書き換えて#を+で表示するように改造しましたが、今回はsysvbannerでハングルを作ってみます。

前回使ったコマンドライン。dataファイルは

takk@deb9:~/tmp$ cat data | perl -pe 'chomp;s/^(.......).(.*)$/sprintf("echo -n \"%s\" | dd seek=%d bs=1 count=%d conv=notrunc of=banner\n",$2,$1,length $2)/e' > t.sh

これを、スクリプトにしてしまいます。

takk@deb9:~/tmp$ cat mybanner.sh
cp /usr/bin/banner .
cat $1 | perl -pe 'chomp;s/^(.......).(.*)$/sprintf("echo -n \"%s\" | dd seek=%d bs=1 count=%d conv=notrunc of=banner\n",$2,$1,length $2)/e' | bash

takk@deb9:~/tmp$ 

これで、dataファイルを用意すれば、sysvbannerが書き換えできるようになりました。

では、ハングルを作っていきます。
dataの文字列の一部だけハングル文字に書き換えて、うまくできるか確認します。
書き換えたのは、@、A、I、K、Sの部分です。
元のデータはoriginにコピーしてあります。差分を見ると、

takk@deb9:~/tmp$ diff data origin
29,49c29,49
<    6120           #   ######  ##### ###### ############## ##### 
<    6184   ###     #   #     ##     ##     ##      #      #     #
<    6248  #   #    #   #     ##      #     ##      #      #      
<    6312 #     #   ### ###### #      #     ######  #####  #  ####
<    6376 #     #   #  ##     ##      #     ##      #      #     #
<    6440  #   #    #   #     ##     ##     ##      #      #     #
<    6504   ###     #   ######  ##### ###### ########       ##### 
<    6568 #     #   #         #       #      #     ##     ########
<    6632 #     #   #         ####### #      ##   ####    ##     #
<    6696 #     #   #         #     # #      # # # ## #   ##     #
<    6760 #######   #         #     # #      #  #  ##  #  ##     #
<    6824 #     #   #   #     #    #  #      #     ##   # ##     #
<    6888 #     #   #   #     # ###   #      #     ##    ###     #
<    6952 #     #   #    #####        ########     ##     ########
<    7016 ######  ##### ######        ########     ##     ##     #
<    7080 #     ##     ##     #   #      #   #     ##     ##  #  #
<    7144 #     ##     ##     #   #      #   #     ##     ##  #  #
<    7208 ###### #     #######    #      #   #     ##     ##  #  #
<    7272 #      #   # ##   #    # #     #   #     # #   # #  #  #
<    7336 #      #    # #    #   # #     #   #     #  # #  #  #  #
<    7400 #       #### ##     # #   #    #    #####    #    ## ## 
---
>    6120  #####    #   ######  ##### ###### ############## ##### 
>    6184 #     #  # #  #     ##     ##     ##      #      #     #
>    6248 # ### # #   # #     ##      #     ##      #      #      
>    6312 # # # ##     ####### #      #     ######  #####  #  ####
>    6376 # #### ########     ##      #     ##      #      #     #
>    6440 #     ##     ##     ##     ##     ##      #      #     #
>    6504  ##### #     #######  ##### ###### ########       ##### 
>    6568 #     #  ###        ##    # #      #     ##     ########
>    6632 #     #   #         ##   #  #      ##   ####    ##     #
>    6696 #     #   #         ##  #   #      # # # ## #   ##     #
>    6760 #######   #         ####    #      #  #  ##  #  ##     #
>    6824 #     #   #   #     ##  #   #      #     ##   # ##     #
>    6888 #     #   #   #     ##   #  #      #     ##    ###     #
>    6952 #     #  ###   ##### #    # ########     ##     ########
>    7016 ######  ##### ######  ##### ########     ##     ##     #
>    7080 #     ##     ##     ##     #   #   #     ##     ##  #  #
>    7144 #     ##     ##     ##         #   #     ##     ##  #  #
>    7208 ###### #     #######  #####    #   #     ##     ##  #  #
>    7272 #      #   # ##   #        #   #   #     # #   # #  #  #
>    7336 #      #    # #    # #     #   #   #     #  # #  #  #  #
>    7400 #       #### ##     # #####    #    #####    #    ## ## 
takk@deb9:~/tmp$ 

では先ほど作成したスクリプトでsysvbannerを書き換え。

takk@deb9:~/tmp$ . mybanner.sh data
56+0 レコード入力
56+0 レコード出力



56+0 レコード入力
56+0 レコード出力
56 bytes copied, 0.000211935 s, 264 kB/s
56+0 レコード入力
56+0 レコード出力
56 bytes copied, 0.00326278 s, 17.2 kB/s
takk@deb9:~/tmp$ 

動かしてみます。

takk@deb9:~/tmp$ ./banner @IKA
           #               #
  ###      #    ######     #
 #   #     #         #     #
#     #    #         #     ###
#     #    #        #      #  #
 #   #     #     ###       #
  ###      #               #

takk@deb9:~/tmp$ ./banner SA
           #
   #       #
   #       #
   #       ###
  # #      #  #
  # #      #
 #   #     #

takk@deb9:~/tmp$

横並びの組み合わせなら、なんとか作れそうです。