ズンドコしたい
ストリーム上の 0 と 1 の並びを sed
に取り込んで、00001 かどうかを DFA っぽく検査する。
$ cat /dev/urandom \ | LANG=C tr -dc "01" \ | fold -w1 \ | (sed -nf dfa.sed; echo 2) \ | perl -ple 'BEGIN { @table = qw/ズン ドコ キ・ヨ・シ!/; } s/(.)/$table[$1]/e;' \ | paste -sd$'\\0' - ズンズンドコドコズンドコズンドコドコドコドコズンズンズンズンドコキ・ヨ・シ!
肝心の dfa.sed は下記の通り。 状態をラベルとして表現している。
s1 から始まって、s5 が「ドコ」を判定する状態。「ドコ」であったら、その後 quit に遷移して受理状態となる。
#!/usr/bin/env sed :s1 /0/ bs2 b restart :s2 p; n /0/ bs3 b restart :s3 p; n /0/ bs4 b restart :s4 p; n /0/ bs5 b restart :s5 p; n /1/ bquit bs5 :quit p; q :restart p; n bs1