パイプ Unix コマンドを使用してファイル内のパターンを永続的に置き換える方法

パイプ 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

yq入力はYAMLファイルなので、次のようなコマンドラインYAMLパーサーを使用する場合があります。https://kislyuk.github.io/yq/

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

これにより、最上位オブジェクトenabledのキーの値が に更新されます。client_encryption_optionsfalse

変更をその場で行うには、またはオプションyqとともにを使用します。--in-place-i

これはJSON ラッパーyqのラッパーなのでjq、ドキュメントからコメントを削除します。


yqプログラムをご利用の場合https://mikefarah.gitbook.io/yq/これは、例えばUbuntuでインストールyqした場合に得られるもので、snap

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

...インプレース編集を行うには、--inplaceまたはオプションを使用します。-i

これにより、yqファイルからコメントが削除されることはありません。

関連情報