如何使用管道 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

由于您的输入是 YAML 文件,因此我们可以使用命令行 YAML 解析器,yq例如https://kislyuk.github.io/yq/

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

这会将顶级对象enabled中的键值更新为。client_encryption_optionsfalse

要就地进行更改,请yq与 it--in-place-i选项一起使用。

yq是 JSON 包装器的包装器jq,因此将从文档中删除注释。


如果您使用的yq程序来自https://mikefarah.gitbook.io/yq/,这是如果您在 Ubuntu 上安装,然后yq使用snap

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

...并使用其--inplace-i选项进行就地编辑。

yq不会从文件中删除注释。

相关内容