テキストをsedに置き換え、元のテキストの一部を保持します。

テキストをsedに置き換え、元のテキストの一部を保持します。

変換しようとしています。

<id>1</id>
<Name>ENTERPRISE RESOURCE PLANNING</Name>

到着する:

<column name="id">1</column>
<column name="Name">ENTERPRISE RESOURCE PLANNING</column>

作業に最適なツールだと仮定していますsedが、置き換え部分で元のテキストの一部を維持する方法がわかりません。

私がするなら:

$ sed -i 's/<.*>.*<.*>/<column name="\\1">\\2<\/column>/g' filename.xml

出力は次のとおりです

<column name="\1">\2</column>
<column name="\1">\2</column>

または内で同様の操作を実行すると、vi次のように出力されます。

<column name=""></column>
<column name=""></column>

合計を元の値に戻すには\1どうすればよいですか?\2

ベストアンサー1

たとえば、次のようにグループを使用できます。

$ sed -i 's/<\(.*\)>\(.*\)<.*>/<column name="\1">\2<\/column>/g' filename.xml

おそらくREで最も混乱しているのは、いくつかの構文スタイルで提供されることです。

たとえば、sedとvimを使用すると、基本正規表現()メタセマンティクスを得るには引用する必要があります。

そして拡張正規表現()(例:awk、egrepなど)文字通りの意味を得るには引用する必要があります。他のメタ文字にも同様の違いがあります。

BREセマンティクスの根拠は、ほとんど()の入力がCコードの場合、メタ使用時に括弧を引用する方がより実用的であることです。

おすすめ記事