Вы можете использовать
sed -i "" 's|version: "[[:digit:]]\.[[:digit:]]\.[[:digit:]]"|version: "'"${VERSION}"'"|' file.yaml
Для соответствия одной или нескольким цифрам вы можете использовать \{1,\}
квантификатор диапазона после eacg [[:digit:]]
:
sed -i "" 's|version: "[[:digit:]]\{1,\}\.[[:digit:]]\{1,\}\.[[:digit:]]\{1,\}"|version: "'"${VERSION}"'"|' file.yaml
Подробно
version: "[[:digit:]]\.[[:digit:]]\.[[:digit:]]"
- LHS, соответствует version:
, пробел, "
, ди git, .
, ди git, .
и ди git (цифры, если используется \{1,\}
) version: "'"${VERSION}"'"
- RHS, замена, заменяется на version:
, пробел, "
, VERSION
переменное содержимое и "
.
Вы можете немного сократить команду, используя
sed -i "" 's|\(version: "\)[[:digit:]]\(\.[[:digit:]]\)\{2\}"|\1'"${VERSION}"'"|' file.yaml
, где \(version: "\)
захвачено в группу 1, а внутри RHS \1
используется для его вставки обратно, а повторение .
и di git выполняется с другой группой, количественно определенной с помощью \{2\}
(два раза) количественного показателя.