Shell脚本-读取属性文件和两个变量的加法(数学)

时间:2018-10-25 13:45:30

标签: linux shell properties scripting addition

我正在编写一个将在循环上运行的程序,我需要增加作为变量传递的时间毫秒。用于时间戳计算。

我发现了如何更改属性文件中的属性,例如:

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脚本非常陌生。

2 个答案:

答案 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)。