<>、##、または || で区切られたグループを含むテキストの本文があります。ブロックが重なることはありませんが、次のように複数の行にまたがることがあります。
#A fully emphasized line#
A line with #emphasis inside#.
#Several lines of
text
With emphasis#
no emphasis
Line #with# multiple #emphasis#.
Line <with some > |text of| #each type#.
区切り文字の各ペアを [ と ] に置き換え、最後の区切り文字を ] の後に置こうとしています。たとえば、最後の行は次のようになります。
Line [with some ]> [text of]| [each type]#.
最初の部分を実行する sed スクリプトを作成しました。
sed -e ':left s/[#|<]/[/; t right; n; b left :right s/[#|>]/]/; t left;n; b right'
しかし、 & (または (..) + \1) を使用して文字を次のように戻そうとすると:
sed -e ':left s/[#|<]/[/; t right; n; b left :right s/[#|>]/]&/; t left;n; b right'
私は以下を取得します:
[A fully emphasized line][
A line with ][emphasis inside][.
][Several lines of
text
With emphasis][
no emphasis
Line ][with][ multiple ][emphasis][.
Line [with some ]]]]]]> [text of[ [each type[.
ただし、ここで何が問題になったのかはわかりません-何らかの方法でパターンブロックを台無しにしているようです. これを 3 つの呼び出し (マッチ タイプごとに 1 つをハードコーディング) に置き換えることもできますが、それは過剰に思えます。