Я пытаюсь найти строку в файле XML
, увеличить число на 1
, следующее за ним, а затем сохранить изменения в том же файле. Существует только один экземпляр этой строки.
Мой файл выглядит следующим образом:
<attribute>
<name>test</name>
<type>java.lang.String</type>
<value>node1-3</value>
</attribute>
Я пытаюсь изменить 3
(после node1-) и увеличить его на 1
каждый раз, когда я запускаю команду. Я попробовал следующий sed, разделив эту строку на 4
частей и заменив ее на эти 4
частей, плюс приращение. К сожалению, похоже, он ничего не делает:
sed -i -r -e 's/(.*)(\node1-)([0-9]+)(.*)/echo "\1\2$((\3+1))\4"/g' filepath
Я также пробовал awk
, что, кажется, куда-то меня заводит, но я не уверен, как добавить вторую половину обратно в строку (
awk '{FS=OFS="-" }/node1/{$2+=1}1' filepath
Наконец, я попытался perl, но он увеличил неправильное число, с node1
до node2
, а не после da sh:
perl -i -pe '/node1-/ && s/(\d+)(.*)/$1+1 . $2/e' filepath
Я новичок в этих командах и не так solid в своем регулярном выражении. Я пытаюсь заставить эту команду работать, чтобы я мог использовать ее в bash сценарии, который я пишу. лучший подход? Какая команда имеет преимущество перед другой? Мне бы хотелось иметь строковую команду 1
, чтобы упростить ситуацию на потом.