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

相关内容