[シェル芸]遊園地の名前を逆から読むとサッカークラブっぽくなる


みなさんこんにちは。朝の日課がTwitterと2chまとめブログのチェックな @nullpopopo でございます。今朝はこんなスレッドを見つけたので、シェル芸でやってみました。暇とか言うな。

遊園地の名前を逆から読むとサッカークラブっぽくなる - VIPPER速報 | 2ちゃんねるまとめブログ

遊園地の名前は大抵「カタカナ+地名」なので、こいつをひっくり返して遊んでみたいと思います。まずは入力した文字列を何も考えずに逆さにしてみましょう。

$ echo "北海道グリーンランド" | grep -o . | tac | xargs | sed -e 's/[[:space:]]//g'
ドンランーリグ道海北

入力した文字列を「grep -o .」で縦にして、tacコマンドで逆さにし、xargsで横に戻します。最後にsedでスペースを削っているのは、xargsの時点でスペースが入るからです。「ド ン ラ ン ー リ グ 道 海 北」のように煽るような出力にしたければsedを削っても構いません。

しかしこれには1つ課題があります。漢字の地名まで逆さになってしまうのです。あくまで逆さにしたいのは遊園地の名前だけですので、ちょっと工夫してみましょう。

$ A="北海道グリーンランド" ; echo $A | grep -o [ア-ヶー] | tac | xargs | sed -e 's/[[:space:]]//g' | sed -e s/$/$(echo $A | sed -e s/[ア-ヶー]//g)/g
ドンランーリグ北海道

若干力技ではありますが、遊園地の名前を変数に格納し、grep -oの段階でカタカナと長音だけを抜き出して逆さにします。そして、最後にsedで行末に地名を付け加えるのですが、今度は変数に格納した遊園地の名前からカタカナと長音を削ったものを出力しています。sedの入れ子ってほんとうに気持ち悪いですね。

ネタの素材探しに、こちらから北海道の遊園地一覧を検索してみたのですが、カタカナ+漢字の遊園地が1つしかない。。。というか、そもそも北海道に遊園地が2つしかないって悲しすぎます試される大地。タメサレル大地。もうしょうがないので、勝手に遊園地をでっちあげて確認してみましょう。

$ echo "タメサレル大地" | grep -o . | tac | xargs | sed -e 's/[[:space:]]//g'
地大ルレサメタ

今度は漢字が先頭に来てしまいました。やはりカタカナと漢字を分離する方式のほうがよさそうですね。

$ A="タメサレル大地" ; echo $A | grep -o [ア-ヶー] | tac | xargs | sed -e 's/[[:space:]]//g' | sed -e s/$/$(echo $A | sed -e s/[ア-ヶー]//g)/g
ルレサメタ大地

はい、試されました。虚しくなってきたので、実際の地名を使って遊園地をでっちあげてみましょう。

$ A="イシカリ石狩" ; echo $A | grep -o [ア-ヶー] | tac | xargs | sed -e 's/[[:space:]]//g' | sed -e s/$/$(echo $A | sed -e s/[ア-ヶー]//g)/g
リカシイ石狩

なんだかウサギィさんみたいですね。

$ A="オコッペ興部" ; echo $A | grep -o [ア-ヶー] | tac | xargs | sed -e 's/[[:space:]]//g' | sed -e s/$/$(echo $A | sed -e s/[ア-ヶー]//g)/g
ペッコオ興部

ちゃんと撥音も含めてひっくり返してくれました。というわけで、サッカーで優勝したことを報告したいと思います。

いかがでしたでしょうか?日本語の扱いは多少なりともこんな工夫が必要だということがお分かりいただけたかと思います。そしてこれを見ている北海道の各自治体の皆様、ハコモノを作ったらだいたいこんなセンスのネーミングになるのはわかりきっていますので、ウンウン唸って施設の名前考えるくらいならシェル芸にやらせりゃいいんですよ、はい。

フルスクラッチから1日でCMSを作る シェルスクリプト高速開発手法入門