sed(だけ)でズンドコキヨシ

  • 7
    いいね
  • 1
    コメント
この記事は最終更新日から1年以上が経過しています。

他のコマンドを一切使わず、sedだけでズンドコキヨシしてみた。

使い方

sed単体では乱数を発生できないため、標準入力(または入力ファイル)から乱数種となる文字列(ASCIIで7バイト以上)を入力する必要がある。それ以外は標準のズンドコキヨシの規定に従う。

me@here $ echo hogehoge | sed -f zundoko.sed 
ズンドコズンズンドコズンドコズンズンドコズンドコドコドコズンズンドコドコドコドコ
ドコドコズンズンドコズンズンズンズンドコキ・ヨ・シ!

動作確認: GNU sed 4.2.2 (--posix 指定時も可)

ソースコード

zundoko.sed
:L1
y/!"#$%&'()*+,-.0123456789:;<=>?@/abcdefghijklmnpabcdefghijklmnop/
y/ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`/abcdefghijklmnopabcdefghijkmnop/
y!qrstuvwxyz{|}~/!abcdefghijklmno!; s/[\]/l/g
s/[^pabcdefghijklmno]//g
/^......./! { N; s/\n//g; b L1; }
s/^\(.......\).*/\1/
s/\([pabcdefg]\)/0\1/g; s/\([hijklmno]\)/1\1/g; y/hijklmno/pabcdefg/
s/\([pabc]\)/0\1/g; s/\([defg]\)/1\1/g; y/defg/pabc/
s/p/00/g; s/a/01/g; s/b/10/g; s/c/11/g; x
:L2
/^.\{28\}/! { x; s/^\(.\)\(.\{24\}\)\(.\)\(..\)/\2\3\4:\1\3/
  s/:\(.\)\1/0/; s/:../1/; x; s/^/*/; b L2; }
s/.//g
:L3
/00001$/! { x; s/^\(.\)\(.\{24\}\)\(.\)\(..\)/\2\3\4:\1\3/
  s/:\(.\)\1/0/; s/:../1/; x; G; s/\n.*\(.\)$/\1/; b L3; }
s/0/ズン/g; s/1/ドコ/g; s/$/キ・ヨ・シ!/
q

まとめ

というわけで、人生で初めて書いたsedスクリプトがズンドコになってしまった…(うわぁ)。