0

ここで基本的なものが欠けている可能性があります。次の文字列の&の間のすべての「。」を削除したいと思います。sedでどの正規表現を使用する必要がありますか?

**&v15.0&** something.anything abc.deg
**&v15.03.15&** something.anything abc.deg
**&v15.01.16.01&** something.anything abc.deg
**&v15.000.155.123.125&** something.anything abc.deg

次のように変更します。

**&v150&** something.anything abc.deg
**&v150315&** something.anything abc.deg
**&v15011601&** something.anything abc.deg
**&v15000155123125&** something.anything abc.deg

&を含む「。」はいくつでもかまいませんが、&の外側の「。」を変更したくありません。

ご協力いただきありがとうございます。

4

2 に答える 2

2

このワンライナーを試してください:

awk -F'&' '{gsub(/\./,"",$2)}1' file

本当に sed でやり​​たいのにGnu sedがある場合は、次のようにします。

sed -r 's/([^&]*&)([^&]*)(&.*)/echo "\1"$(echo "\2"\|sed "s#\\.##g")"\3"/ge' file

sed ラインをテストします。

kent$  echo "**&v15.0&** something.anything abc.deg
**&v15.03.15&** something.anything abc.deg
**&v15.01.16.01&** something.anything abc.deg
**&v15.000.155.123.125&** something.anything abc.deg"|sed -r 's/([^&]*&)([^&]*)(&.*)/echo "\1"$(echo "\2"\|sed "s#\\.##g")"\3"/ge'
**&v150&** something.anything abc.deg
**&v150315&** something.anything abc.deg
**&v15011601&** something.anything abc.deg
**&v15000155123125&** something.anything abc.deg
于 2013-03-04T17:49:12.373 に答える
1

通常sedの(非GNUでも)試してみてください:

sed -e :a -e 's/\(&.*\)\.\(.*&\)/\1\2/; ta' file
于 2013-03-04T20:29:23.130 に答える