2

次の内容のファイルがあります (これ.propertiesは Java のファイルです)。

product.company.url=http://www.example.com/
product.version=1.3.2

プロパティ名のすべてのドットを置き換える必要がありますが、プロパティ値では置き換えません。したがって、私の望ましい出力は次のようになります。

product_company_url=http://www.example.com/
product_version=1.3.2

試してみsed -r 's/\.(\w+)([^=]*)/_\1\2/' product.default.propertiesましたが、これは最初のドットのみを置き換えます。先読みまたは後読みを使用する必要があるかもしれないと思いますが、アサーションの長さが可変になるため、それが可能かどうかはわかりません。また、プロパティ名にはさまざまな数のドットが含まれる場合があります。

ワンライナーでこれを行うことは可能ですか?

4

1 に答える 1

2

この行を試してください:

awk -F= -vOFS="=" 'gsub(/\./,"_",$1)+1' file.properties

あなたの例でテストしてください:

kent$  echo "product.company.url=http://www.example.com/
product.version=1.3.2"|awk -F= -vOFS="=" 'gsub(/\./,"_",$1)+1'
product_company_url=http://www.example.com/
product_version=1.3.2
于 2013-02-28T16:51:49.003 に答える