Shell Scripting - Чтение файла свойств и сложение (математическое) двух переменных - PullRequest
0 голосов
/ 25 октября 2018

Я пишу программу, которая будет работать в цикле, и мне нужно увеличивать время в миллисекундах, которое передается как переменная.Это для расчета метки времени.

Я узнал, как изменить свойства в файле свойств следующим образом:

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?Я должен отметить, что я чрезвычайно новичок в написании сценариев оболочки.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Используя awk, это будет:

awk -F= '$1=="exampleKey"{$2+=500}1'

Разделитель поля установлен на = символ, так что $2 указывает на значение, которое вы хотите увеличить.

Если у вас GNU awk, вы можете использовать опцию -i inplace, чтобы выполнить изменение непосредственно над файлом (аналогично -i для sed).

0 голосов
/ 25 октября 2018

sed не могу сделать математику.Perl может:

perl -i~ -pe '/exampleKey=/ and s/=(.*)/"=" . ($1 + 500)/e' test.properties
  • -p читает файл построчно и печатает каждый после обработки

  • /e оценивает заменучасть как код.

Вы можете использовать косвенное утверждение для более короткого кода:

s/(?<==)(.*)/$1 + 500/e

т.е. заменить все, что предшествует =, на само собой + 500.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...