テキスト文字列を置き換え、その間の内容をキャプチャします。

テキスト文字列を置き換え、その間の内容をキャプチャします。

LaTeXドキュメントを編集していますが、 '\parallel'のすべてのインスタンスを 'something'\parallel something \parallelに変更する必要がある\norm{something}場合があります。 '\parallel' と 'something' の間にスペースはありません。使ってみよう

$ sed -i 's/\\parallel[.*]\\parallel/\\norm\{\1\}/g' a.txt  $

ただし、「無効な参照」エラーが返されます。正しいコードは何ですかsed

ベストアンサー1

これを行うとき:

$ sed -i 's/\\parallel[.*]\\parallel/\\norm\{\1\}/g' a.txt

、キャプチャグループを使用していません。

[]指定した文字クラスから。文字クラスは、それらの1つに置き換えることができるいくつかの記号です。したがって、REは[.*]「文字列」ではなく正確に一致するのと同じです。.*

キャプチャグループはで表示されます\(RE\)。したがって、以下のよう[]に変更する必要があります。\(\)

$ sed -i 's/\\parallel\(.*\)\\parallel/\\norm{\1}/g' a.txt

経由でアクセスできます\1

おすすめ記事