我正在编写一个将在循环上运行的程序,我需要增加作为变量传递的时间毫秒。用于时间戳计算。
我发现了如何更改属性文件中的属性,例如:
sed -i "/exampleKey=/ s/=.*/=newExampleValue1/" test.properties
但是在此之前,我希望能够获得currentExampleValue1并对其进行加法运算。.
像这样:
exampleKey=1000
//Get Current value here (1000)
sed -i "/exampleKey=/ s/=.*/= (current value + 500) /" test.properties
现在属性文件为:
exampleKey=1500
在Linux中有一种简单的方法吗?我应该注意,我对Shell脚本非常陌生。
答案 0 :(得分:1)
sed
无法做数学。 Perl可以:
perl -i~ -pe '/exampleKey=/ and s/=(.*)/"=" . ($1 + 500)/e' test.properties
-p
逐行读取文件并在处理后打印每个文件
/e
将替换零件评估为代码。
对于较短的代码,您可以使用后向断言:
s/(?<==)(.*)/$1 + 500/e
即将=
之前的所有内容替换为+500。
答案 1 :(得分:0)
使用awk
,这将是:
awk -F= '$1=="exampleKey"{$2+=500}1'
字段定界符设置为=
字符,以使$2
指向要增加的值。
如果您具有GNU awk,则可能要使用选项-i inplace
直接在文件上执行更改(与sed类似-i
)。