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

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

У меня есть следующие строки, поэтому я просто хочу заменить их в частности

client_encryption_options:
    enabled: true                    

к

client_encryption_options:
    enabled: false
client_encryption_options:
    enabled: true
    # If enabled and optional is set to true, encrypted and unencrypted connections over native transport are handled.
    optional: false
    keystore: XXXXXX
    keystore_password: XXXXX

    # Set require_client_auth to true to require two-way host certificate validation
    require_client_auth: true
    #
    # Set truststore and truststore_password if require_client_auth is true

решение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оболочка вокруг jqоболочки JSON, поэтому она удалит комментарии из документа.


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

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

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

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

Связанный контент