AA 折れ線 graph

なんというか、手遅れ感全開ですが、気にしない方向で。

nosuke さん曰く、「sedを織り交ぜたら何か楽なことができる気がした。そう思ったら後は何も考えなかった。今は反省s(ry」(やや脚色されている部分があります)。

実際にやってみた (トリビアの泉の narrator の口調で

織りまぜてないけど。呼び出しは echo [RFC]* | ./script 乃至 ./script (標準入力に打ち込む) で。元々は旧 HD から data を引きずり出す (crash 多発) 間の暇つぶしにやったんだけど、素直に jump 使いまくったらなんか便利な assembly になって面白くなかったので、可能な限り正規表現固執してみました。すると最初の「暇つぶし」という目的はどこへやら…。基本 style は「一つの s/// を掛けられなくなるまで掛けつづけると何か変換が完了する」という方針です。

s/^# //g すると debug dump が出ます。s/@/ /g すると、元の問題通り隙間が空白で埋められます。

つーか、s/// で bubble sort を実装する日が来るとは…orz

あ、ちなみに 10 文字ぐらい食べさせるとしばらく帰ってこないからよろしく(藁

#!/bin/sed -nf

G
: bloat
# p
# i\----
s|^\([RFC]\)\([RFC]*\)\(.*[>\n]\)\(\([RFC]*\)\( *\)\)$|\2\3\4>\5\1@\6|
t bloat

# p
# i\----

: fixup
s|\n\{0,1\}\(.*\)>\([RFC@]*\)\n\{0,1\}\(%*\)|\1\3%\2\n\3|
t fixup

# p
# i\----

s|R@|/|g
s|C@|_|g
## A fall takes effect right away (partly).
s|F@|%\\|g

s|R||g
s|C|%|g
s|F|%%|g

# p
# i\----

: sort
s|\(%*\)\(%\{1,\}[/_\\@]*\n\)\1\([/_\\@]*\n\)|\1\3\1\2|
t sort

# p
# i\----

s|\([/_\\]\)\(@*\)\n|\2\1\2\n|g

# p
# i\----

: merge
s|\(%*\)\([/_\\@]*[/_\\]\)\(@*\)\n\1@*\([/_\\]\)\3@\(@*\)\n|\1\2\5\4\3@\5\n|
# p
# i\--
t merge

# p
# i\----

s|%||g
s|\(@*\)\n|\n|g
s|\n$||

p

... there are some really sick things you can do with regular expressions.
--Charles Stross