Не могли бы вы попробовать следующее решение awk
+ tac
, написанное и протестированное с показанными образцами в GNU awk
. Поскольку OP упомянул, что OP не может использовать yq
, поэтому добавьте это решение.
Существует переменная awk
с именем new_version
, которая будет иметь новую версию, которую OP потребует в выводе, вы можете позже изменить номер версии там в соответствии с вашими потребностями и не нужно редактировать основной блок кода.
tac Input_file |
awk -v s1="'" -v new_version="6.3.4.7" '
/Cloudmode.*Azure/{
found=1
print
next
}
found{
$NF=s1 new_version s1
found=""
}
1
' | tac
В случае, если вас устраивает вышеуказанное и вы хотите сохранить на месте в Input_file, используйте следующее.
tac Input_file |
awk -v s1="'" -v new_version="6.3.4.7" '
/Cloudmode.*Azure/{
found=1
print
next
}
found{
$NF=s1 new_version s1
found=""
}
1
' | tac > temp && mv temp Input_file