РЕДАКТИРОВАТЬ: Поскольку ОП добавил информацию, поэтому добавив код в соответствии с информацией.
awk -v version="version=\"01.00.00.42\"" 'BEGIN{FS=OFS=".";s1="\""} match($0,version) && ++count==2{$NF+=1;$NF=$NF s1} 1' Input_file
Вотрабочий раствор Добавлен OP:
grep version descriptor.xml | tail -n 1 | awk -F= '{print $2}' | awk -F\" '{print $2}' increatedNum=$(printf "%03d" expr $(echo $OldVersion | cut -d'.' -f4) + 1) NewVersion=echo $OldVersion | cut -d'.' -f1-3.$increatedNum sed -i "s/$OldVersion/$NewVersion/g" descriptor.xml
Не могли бы вы попробовать следующее.
awk 'BEGIN{FS=OFS=".";s1="\""} {$NF+=1;$NF=$NF s1} 1' Input_file
Вывод будет следующим.
version="01.00.00.42"
В случаеВы хотите сохранить вывод в сам файл Input_file, используя следующее:
awk 'BEGIN{FS=OFS=".";s1="\""} {$NF+=1;$NF=$NF s1} 1' Input_file > temp && mv temp Input_file
ИЛИ согласно комментарию @ tshiono, вы также можете попробовать выполнить следующее.
awk 'BEGIN{FS=OFS=".";s1="\""} {$NF+=1;$NF=sprintf("%03d%c", $NF, s1)} 1' Input_file