比较不同格式的两个文件 TXT/JSON

Diff two files in different formats TXT/JSON

我有两个包含相似数据但格式不同的文件 (JSON/TXT)。

文件-A.json

        {
        "Name": "www.mydomain.com.",
        "Type": "A",
        "TTL": 600,
        "ResourceRecords": [
            {
                "Value": "8.8.8.8"
            }
        ]
    },
    {
        "Name": "other.domain.com.",
        "Type": "NS",
        "TTL": 1800,
        "ResourceRecords": [
            {
                "Value": "123.reg."
            }
        ]
    }
]

}

文件-B.txt

www.mydomain.com 600 IN A 8.8.8.8
other.domain.com 1800 IN NS 123.reg.

我正在尝试找出区分这两个文件的最佳方法,以便我可以查看这些记录是否 exist/match。但是,由于它们采用不同的格式,我不确定这是否可行,所以我的想法是将两个文件解析为具有相同的格式,然后 运行 diff on them 但我什至不知道如何开始。

我已经能够使用 jq 解析 json 来获取特定记录

cat file-B.json | jq '.ResourceRecordSets[] | {"Name": .Name,"ResourceRecords": .[]}' 

但开始认为这甚至不是最好的方法。

主要方法是获取相同格式的两个数据。

因此,让我们在 jq 的帮助下将 JSON 文件转换为与文本文件相同的格式:

jq -r '
# For all array entries
.[] | 
  # Concatenates values to compose a flat DNS zone text file
  .Name +
  " " +
  (.TTL|tostring) +
  " IN " +
  .Type +
  " " +
  .ResourceRecords[0].Value
' \
file-A.json |
  diff - file-B.txt