比较不同格式的两个文件 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
我有两个包含相似数据但格式不同的文件 (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