LoginSignup
10
7

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-03-21

他のコマンドを一切使わず、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スクリプトがズンドコになってしまった…(うわぁ)。

10
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
7