Как навсегда заменить шаблон в файле с помощью команды Unix pipe

Я выразил это другими словами :За исключением строки +и строки, начинающейся с @, вставьте строки Iперед строками R.

Если вы понимаете, почему, все становится очень просто:

sed '/^[@+]/s/.*//' I|paste -d '' - R
  • /^[@+]/выбирает строки, начинающиеся с +или @
  • .
  • s/.*//очищает эти строки
  • paste -d '' - Rвставил результат(-для конвейерного ввода )без разделителя(-d '')в файл R.
-1
27.10.2021, 02:36
1 ответ

Поскольку ваш ввод представляет собой файл 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представляет собой оболочку jqJSON-оболочки, поэтому комментарии будут удалены из документа.


Если вы используете программу yqиз https://mikefarah.gitbook.io/yq/, которую вы получите, если установите yqс помощью snap, например. Ubuntu, затем используйте

yq eval '.client_encryption_options.enabled |= false' file.yml

... и используйте опцию --inplaceили -iдля редактирования места -.

Это yqне удаляет комментарии из файла.

1
27.10.2021, 06:06

Теги

Похожие вопросы