Sed - コマンドの検索と実行

Sed - コマンドの検索と実行

以下に示すように、app.propertiesというファイルがあります。

prop1.value=hi
prop2.value=hello
prop3.url=https://google.com

私の要件に従っている場合は、.valueユーティリティ関数を呼び出して値を置き換える必要があります。たとえば、ユーティリティーは渡された文字数に* 2を掛けます。

したがって、状況はこうする必要があります。

prop1.value=4
prop2.value=10
prop3.url=https://google.com

sedを使って簡単な検索と置換を行いました。値を変更するためにコマンドを呼び出す方法がわかりません。

  sed -E 's/.value=(.*)/.value=\1/g' app.properties

sedが正しい選択でない場合は、代替案を提案できますか?

ベストアンサー1

どうですか?

$ awk 'BEGIN{OFS=FS="="} $1 ~ /\.value$/ {$2 = 2 * length($2)} 1' app.properties 
prop1.value=4
prop2.value=10
prop3.url=https://google.com

アプローチに近いものが必要な場合は、sedおそらく

perl -pe 's/\.value=(.*)/sprintf ".value=%s", 2 * length $1/e' app.properties

または

perl -pe 's/(?<=\.value=).*/2 * length $&/e' app.properties

おすすめ記事