まとめです。
Buntaくんがやれるのはこの程度です。m(__)m >Bruce.さん
egsed (GNU sed version 4.0.7, English), ssed, mbsed, onigsed
の4つで、onigsedを検証しました。改行文字「関連」の扱いに関してです。
BRE modeでこの程度の表現なら違いが出ないという理由で、この4つが選ば
れています。baseもほぼ同じ。
検証されているのはonigsedで、他は実験に間違いがないことを確認する
ための参考意見です。mbsed(onigsedの兄)は完璧でした。立派! でも、
Perl-like Regexがないなので、頑張れonigsedとなっているわけです。
恐そうな3人に囲まれているかのような構図ですが、いじめているのでは
ありません。「強くなれ、飛雄馬」「強くなれ、onigsed」です。(もちろん
『巨人の星』とonigsedは切っても切れない縁です。TS-network trivia.)
また上で「関連」といってるのは、quantifierとかも絡むようだからです。
(間違っているかもしれない後知恵)
#2436] Re:「\n」の振る舞い@日本語版sed(s) で、
> Onigsedでは、s/\n\n/\n/の命令に対して、s/\n\n/\n\n/のように
> 振る舞ってしまうのです。
と書いていますが、もうちょっと話は複雑なようで、でもあともう少しだけ正確
なところを割り出せるような気がしていたのですが、な、なんと、途中で忘れてし
まってました。\(^_^)/ (なんで万歳してるんだよ)
実験は(けっこう単純化できました。どうしてこれをすぐに思いつかないの?)、
--- test.txt ---
aa
bb
----------------
--- test.sed --- # pattern space
#aa (auto-reading)
G #aa\n
G #aa\n\n
$!N #aa\n\n\nbb this string is to be replaced etc....
???????????????? #ここに下の置換などのコマンドを入れる
----------------
(これは改行文字を3つはさむ場合。2つならGを1つ取る。)
という具合に行ないました。
(改行文字2つ)
# ( task: aa\n\nbb --> \nbb ) s/LHS//
# (when LHS is,) (result of onigsed)
#
# ^[^\n][^\n]*\n NG
# ^[^\n]\+\n NG
# ^[^\n]\{1,\}\n very NG (result: aa\n\n\nbb !!)
# ^[^\n]\{2\}\n very NG (result: aa\n\nbb !)
ぜんぜん分かりませんねぇ。
(改行文字2つ)
# (task: aa\n\nbb -> \n\nbb) s/[^\n]*// or s/^[^\n]*//
# onigsed, result, very NG, deletes all.
げ、これが駄目なの?
(改行文字2つ)
# Then, anything wrong with [^\n] proper?
# Answer. no.
# because (task: aa\n\nbb -> Aa\n\nbb) s/[^\n]/A/
# onigsed: OK
(改行文字3つ)
# Anything wrong with \n proper? when \n in LHS is more than two.
s/aa\n\n\nbb/aa\n\nbb/ no, because this is OK with Onig
# But! the below fails.
s/aa\n\{3\}bb/aa\n\nbb/ NG
少なくとも「量指定子」(かな)が絡むと、「\n」も「[^\n]」もこける
という感じでしょうか…。
読みにくかったらごめんなさい。こういう事柄に正確であろうとすると英語に
なってしまって。そうしないと集中力がもたない(「もっててこのざま? 論理
的じゃないよ」「あうあう。でも何も分からないところに道を見つけて、Bruce.
さんに楽してもらおうと必死にやったんで、どうか許してやってくださいよ」)
「ぜんぜん楽になってない (-_-#」 すみません。
間違っていたらごめんなさい。I apologize in advance. :-)
--I've never heard that expression above before, but it's cute. :-)
僕はまったく急いでいません。いつの日にか宜しくお願いいたします。m(_B_)m
追伸:もちろん、Vzerですので、SJISしか知りません。
Bunta