sed を使用した複雑な文字列の検索と置換

sed を使用した複雑な文字列の検索と置換

「xyz.abc.001.xxx.0.820」などの文字列を含む大きなファイルがありますが、ファイル全体で「0,820,xyz.abc.001.xxx」に置き換えたいと思います。

例:

xyz.abc.001.xxx.0.820\ to 0,820,xyz.abc.001.xxx 
xyz.abc.001.xxx.820.123\ to 820,123,xyz.abc.001.xxx
xyz.abc.001.xxx.1000.2000\ to 1000,2000,xyz.abc.001.xxx 
xyz.abc.001.xxx.1.100\ to 1,100,xyz.abc.001.xxx 

次のsedコマンドと正規表現を使用していますが、正しく置き換えられません

sed -E "s/(xyz.abc[0-9]\+\.xxx)\.([0-9]\+)\.([0-9]\+)\\/\2,\3,\1/g" file_name

これは可能ですか?

よろしくお願いします。

ベストアンサー1

試してみてください

sed -E "s/(xyz.abc.*xxx).([0-9]+)\.([0-9]+)./\2,\3,\1/" 
sed -E "s/(xyz.abc.*xxx).([0-9]+)\.([0-9]+)\\\\/\2,\3,\1/" 

どこ

  • モードの選択は次のように行われます。\( ... \)
  • 末尾は(すべての文字)または(シェルからエスケープし、sedからエスケープ)として\キャプチャできます。.\\\\
  • 点を指定するために.またはを使用することに注意してください。\.

おすすめ記事