So ersetzen Sie ein Muster dauerhaft in einer Datei mit dem Unix-Befehl „Pipe“

So ersetzen Sie ein Muster dauerhaft in einer Datei mit dem Unix-Befehl „Pipe“

Ich habe folgende Zeilen, also möchte ich nur besonders ersetzen

client_encryption_options:
    enabled: true                    

Zu

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

Antwort1

Da Ihre Eingabe eine YAML-Datei ist, können wir einen YAML-Parser für die Befehlszeile verwenden, wie yqvonhttps://kislyuk.github.io/yq/

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

Dadurch wird der Wert des enabledSchlüssels im client_encryption_optionsObjekt der obersten Ebene auf aktualisiert false.

Um die Änderung direkt vorzunehmen, verwenden Sie sie yqmit der Option --in-placeoder -i.

Dies yqist ein Wrapper um den jqJSON-Wrapper und entfernt daher Kommentare aus dem Dokument.


yqWenn Sie das Programm von verwendenhttps://mikefarah.gitbook.io/yq/, das ist die Version, die Sie erhalten, wenn Sie sie beispielsweise auf Ubuntu installieren. Verwenden Sie yqdannsnap

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

... und verwenden Sie die Option --inplaceoder -i, um Änderungen direkt vorzunehmen.

Dadurch yqwerden keine Kommentare aus der Datei entfernt.

verwandte Informationen