Я выразил это другими словами :За исключением строки +
и строки, начинающейся с @
, вставьте строки I
перед строками R
.
Если вы понимаете, почему, все становится очень просто:
sed '/^[@+]/s/.*//' I|paste -d '' - R
/^[@+]/
выбирает строки, начинающиеся с +
или @
s/.*//
очищает эти строки paste -d '' - R
вставил результат(-
для конвейерного ввода )без разделителя(-d ''
)в файл R
. Поскольку ваш ввод представляет собой файл YAML, мы можем использовать синтаксический анализатор строки команды -YAML, например yq
изhttps://kislyuk.github.io/yq/
yq -y '.client_encryption_options.enabled |= false' file.yml
Это обновляет значение ключа enabled
в объекте client_encryption_options
верхнего -уровня до false
.
Чтобы изменить позицию -, используйте yq
с опцией --in-place
или -i
.
Этот yq
представляет собой оболочку jq
JSON-оболочки, поэтому комментарии будут удалены из документа.
Если вы используете программу yq
из https://mikefarah.gitbook.io/yq/, которую вы получите, если установите yq
с помощью snap
, например. Ubuntu, затем используйте
yq eval '.client_encryption_options.enabled |= false' file.yml
... и используйте опцию --inplace
или -i
для редактирования места -.
Это yq
не удаляет комментарии из файла.