" "代わりに " echo ,,, |sed s':\(,\)\(,\):\1*\2:'g
"が生成されるのはなぜですか?つまり、「g」フラグにもかかわらず、sedがカンマペアの間に ''を挿入しないのはなぜですか?,*,,
,*,*,
*
ベストアンサー1
これは、2つの,
sに対して(,\)\(,\)
すでに最初の2つを一致させ、,
これまで一致した正規表現パターンが残りの行を逆追跡しないためです。最後の1つだけが残っているので、途中で2番目の項目なしで,
そのまま印刷されます。*
他の入力があると、希望の(グローバル、)応答が,
得られます。g
% echo ,,,, | sed s':\(,\)\(,\):\1*\2:'g
,*,,*,