从json中删除条目

时间:2017-08-15 14:13:36

标签: json regex bash awk sed

我想使用bash命令从这个json文件中删除“registrationCertificates”条目

{
  "hardwarePrivateKey": "-----BEGIN RSA PRIVATE KEY-----\1234
  "destinations": [
    { 
      "destination": "test.com",
      "destinationIP": "1.1.1.1",
      "registrationPrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nM
      "registrationPublicKey": "-----BEGIN RSA PUBLIC KEY-----\nMI
      "hardwareCertificates": [
        "certificate": "-----BEGIN CERTIFICATE-----\nM
        "certificate": "-----BEGIN CERTIFICATE-----\nMIID
      ],
      "registrationCertificates": [
        "certificate": "-----BEGIN CERTIFICATE-----\nMIID
        "certificate": "-----BEGIN CERTIFICATE-----\nMIID0
      ]
    }
  ]
}
CRC=8

3 个答案:

答案 0 :(得分:1)

你的json不是有效的,所以这永远不会有效......但

我建议您安装jq包。它是一个在bash中使用JSON的命令行工具。

然后您可以使用jq删除密钥,如下所示:

jq 'map(del (.keyToRemove) | del (.secondKeyToRemove))'

享受!

答案 1 :(得分:0)

尝试关注并告诉我这是否对您有所帮助。

awk '/registrationCertificates/{p=1} /]/ && p{p="";next} p{next}1'  Input_file

答案 2 :(得分:0)

假设你的文件是mytest.json,这里有一个完成你需要的代码:

   cat mytest.json | tr '\n' '&' | sed -e 's/, *& *"registrationCertificates": *\[ *&.* \] *& +//g'  | tr '&' '\n' > myoutput.json

问候! :)