【发布时间】:2021-09-24 13:46:59
【问题描述】:
我有file1.json 和纯文本file2,如果使用file2 值与file.json 进行比较,匹配值为file2 会有相应的字段,即file1.json 中的CaseID@ 结果文件应该由这些值组成。我在下面提到了预期结果的案例。
我尝试使用 awk 工具进行提取,但没有得到预期的答案
awk -F, 'FNR==NR {f2[$1];next} !($0 in f2)' file2 file1
file1.json
{
"Cases": [{
"CaseID": "100",
"CaseUpdatedByUser": "XYZ",
"Case": {
"CaseName": "Apple",
"ID": "1"
}
},
{
"CaseID": "350",
"CaseUpdatedByUser": "ABC",
"Case": {
"CaseName": "Mango",
"ID": "1"
}
},
{
"CaseID": "440",
"CaseUpdatedByUser": "PQR",
"Case": {
"CaseName": "Strawberry",
"ID": "1"
}
}
]
}
文件2
Apple
Strawberry
Mango
预期输出:
100
350
440
【问题讨论】:
-
这可能会有所帮助:
jq -r '.Cases[] | "\(.Case.CaseName);\(.CaseID)"' file1 -
@Cyrus 我的系统配置了自定义repo,所以无法下载
jq -
@Cyrus 是将值与 file2 进行比较的命令。我在命令中看不到有关 file2 的任何信息
-
没有。正确的。但这使得使用
awk处理输出变得更容易。 -
@Cyrus 不知何故我设法使用
jq提取结果.. 这个结果我使用awk但它会导致最后一个参数的文件内容被传递..jq -r '.Cases[] | "\(.Case.CaseName);\(.CaseID)"' file1 >> f1我将结果重定向到 f1 文件的 f1 内容~~~ Apple;100 Mango;350 Strawberry;440 ~~~ 现在如果使用 awk ``` awk -F, 'FNR==NR {f2[$1];next} ! ($0 in f2)' file2 f1```会变成f1的内容
标签: json awk sed file-comparison