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