sedを使用して最初の一致グループの後に数字を使用して検索と置換を実行する方法(一致グループの適切なエスケープ)

sedを使用して最初の一致グループの後に数字を使用して検索と置換を実行する方法(一致グループの適切なエスケープ)

ヘッダー

たぶんこれを変換したいかもしれません:

aaaa

到着する:

1aaa1

したがって、次のように提案してみましょう。

echo aaaa | sed --regexp-extended 's/(.*)a/1\11/'
1aaa1

質問

1\11100%有効で明確なパターンですかsedsedこのタイプの置換のすべてのベストプラクティスに従いましたか?

私の言葉は1\11 おそらくおそらく両方があります:

  1. charに置き換えて1から1°一致グループ、次に別のcharに置き換えます1(→現在の動作)
  2. 文字に変更した111° 一致グループ(→例外発生)

現在私のsedバージョンに最初の説明があるようです。とにかく、これが文書化されているのか、それとも.NETで可能なのかわかりませんsed

説明していただきありがとうございます。同時に、私はこれの上に城を建てません。

現在私はGNU sed 4.7を使用しています。

ベストアンサー1

@QuartzCristalユーザーが言ったように、GNUのマニュアルページsedには次のメモがあります。

s/正規表現/交換/

パターン空間と正規表現を一致させてください。成功すると、交換と一致する部分が交換されます。代替項目には、パターン空間の一致する部分を表す特殊文字&、正規表現で一致する対応するサブ式を表す特殊エスケープ文字\ 1〜\ 9を含めることができます。

1Perlのような一般的なプログラミング言語から来たので、そのような制限がないことを知りませんでした9(例えば、私が書くことができるからです1{$19}1sed。したがって、構文は現在100%正確で異なる方法で解釈できないことがわかります。

この答えはGNU sedで動作します。 POSIX定義かどうかはわかりません。

おすすめ記事