Sed:数字の発生を維持しながらテキストを置き換える

Sed:数字の発生を維持しながらテキストを置き換える

次のテキストがあります。

Blablabla <b>[intlink id="</b>2204<b>" type="page"] Blalala

</b>取り外して<b>維持するために交換したいですid="number"。したがって、結果は次のようになります。

Blablabla <b>[intlink id="2204" type="page"] Blalala

私は試みる:

sed -i 's@id="</b>[[:digit:]]\+<b>"@id="{1}"@g' ~/edit.txt
Blablabla <b>[intlink id="{1}" type="page"] Blalala

私も次のことを試しました。

sed -i 's@id="</b>[[:digit:]]\+<b>"@id="\\1"@g' ~/edit.txt

しかし、私は次のようになります。

Blablabla <b>[intlink id="\1" type="page"] Blalala

それでは、正規表現番号にID番号のテキストをどのように保持できますか?

答え1

\1キャプチャグループ1を参照する正しい構文は、\\1リテラルテキストが必要なことです\1。したがって、\\1に変更し\1てから、実際にキャプチャしたい部分を括弧内に入れる必要があります。これは働きます:

sed -i 's@id="</b>\([[:digit:]]\+\)<b>"@id="\1"@g' ~/edit.txt

関連情報