Como substituir um padrão permanentemente em um arquivo usando o comando pipe Unix

Como substituir um padrão permanentemente em um arquivo usando o comando pipe Unix

Eu tenho as seguintes linhas, então só quero substituir particularmente

client_encryption_options:
    enabled: true                    

para

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

Responder1

Como sua entrada é um arquivo YAML, podemos usar um analisador YAML de linha de comando, como yqfromhttps://kislyuk.github.io/yq/

yq -y '.client_encryption_options.enabled |= false' file.yml

Isso atualiza o valor da enabledchave no client_encryption_optionsobjeto de nível superior para false.

Para fazer a alteração no local, use yqcom a opção --in-placeou -i.

Este yqé um wrapper em torno do jqwrapper JSON e, portanto, removerá os comentários do documento.


Se você estiver usando o yqprograma dehttps://mikefarah.gitbook.io/yq/, que é o que você obtém se instalar yqusando snap, por exemplo, Ubuntu, então use

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

... e use sua opção --inplaceou -ipara fazer edições no local.

Isso yqnão removerá os comentários do arquivo.

informação relacionada