如何使用管道 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不會從文件中刪除註釋。

相關內容