Cómo reemplazar un patrón permanentemente en un archivo usando el comando pipe Unix

Cómo reemplazar un patrón permanentemente en un archivo usando el comando pipe Unix

Tengo las siguientes líneas, así que solo quiero reemplazar particularmente

client_encryption_options:
    enabled: true                    

a

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

Respuesta1

Dado que su entrada es un archivo YAML, podemos usar un analizador YAML de línea de comandos, como yqdesdehttps://kislyuk.github.io/yq/

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

Esto actualiza el valor de la enabledclave en el client_encryption_optionsobjeto de nivel superior a false.

Para realizar el cambio in situ, utilice yqsu opción --in-placeo -i.

Este yqes un contenedor alrededor del jqcontenedor JSON y, por lo tanto, eliminará los comentarios del documento.


Si estás utilizando el yqprograma dehttps://mikefarah.gitbook.io/yq/, que es el que obtienes si instalas yqusando snap, por ejemplo, Ubuntu, luego usas

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

... y use su opción --inplaceo -ipara realizar ediciones in situ.

Esto yqno eliminará los comentarios del archivo.

información relacionada