如何从 JSON 文件的字段中获取特定字段?
How can I get specific fields from within fields in a JSON file?
我有一个名为 test 的文件,它是通过使用 cURL 获取信息创建的,如下所示:
curl "https://example.com/public?command=getInfo" > test | python -m json.tool > test
结果是这样的:
{
"A_B": {
"Field1": "0.36564104",
"Field2": "0.00000580",
"Field3": "0.00000558",
"Field4": 177,
"Field5": "0"
},
"B_A": {
"Field1": "19.02374743",
"Field2": "0.00049000",
"Field3": "0.00047179",
"Field4": 253,
"Field5": "0"
},
"A_C": {
"Field1": "19.02374743",
"Field2": "0.00049000",
"Field3": "0.00047179",
"Field4": 253,
"Field5": "0"
}
...
}
我需要从 A_B 和 A_C Field2 和 Field5 获取。因此,我尝试使用 AWK 实时编辑器,但到目前为止,我所管理的最好的是
-F "[, ]+" '/A_B/{print ,}'
也就是说,我没有任何实质性的进步,当然也没有用。
我的目标是保存到两个名为 test2 和 test3 的文件中,它们看起来像这样:
测试 2:
A_B: 0.00000580
A_C: 0.00049000
测试 3:
A_B: 0
A_C: 0
包含 test2 中的 Field2 和 test3 中的 Field5 的值,但到目前为止,我卡住了。
感谢任何帮助!
使用jq:
jq -r '"A_B: \(.A_B["Field2"])", "A_C: \(.A_C["Field2"])"' test > test2
解释:命令
jq -r '.A_B["Field2"]' test
提取 A_B
的 Field2
的值 0.00000580
并且 "A_B: \(…)"
添加文字字符串 A_B:
作为前缀。打印在下一行的 A_C
字段也是如此。输出被重定向到文件 test2
.
field5
和输出文件 test3
的等效命令是
jq -r '"A_B: \(.A_B["Field5"])", "A_C: \(.A_C["Field5"])"' test > test3
我有一个名为 test 的文件,它是通过使用 cURL 获取信息创建的,如下所示:
curl "https://example.com/public?command=getInfo" > test | python -m json.tool > test
结果是这样的:
{
"A_B": {
"Field1": "0.36564104",
"Field2": "0.00000580",
"Field3": "0.00000558",
"Field4": 177,
"Field5": "0"
},
"B_A": {
"Field1": "19.02374743",
"Field2": "0.00049000",
"Field3": "0.00047179",
"Field4": 253,
"Field5": "0"
},
"A_C": {
"Field1": "19.02374743",
"Field2": "0.00049000",
"Field3": "0.00047179",
"Field4": 253,
"Field5": "0"
}
...
}
我需要从 A_B 和 A_C Field2 和 Field5 获取。因此,我尝试使用 AWK 实时编辑器,但到目前为止,我所管理的最好的是
-F "[, ]+" '/A_B/{print ,}'
也就是说,我没有任何实质性的进步,当然也没有用。
我的目标是保存到两个名为 test2 和 test3 的文件中,它们看起来像这样:
测试 2:
A_B: 0.00000580
A_C: 0.00049000
测试 3:
A_B: 0
A_C: 0
包含 test2 中的 Field2 和 test3 中的 Field5 的值,但到目前为止,我卡住了。
感谢任何帮助!
使用jq:
jq -r '"A_B: \(.A_B["Field2"])", "A_C: \(.A_C["Field2"])"' test > test2
解释:命令
jq -r '.A_B["Field2"]' test
提取 A_B
的 Field2
的值 0.00000580
并且 "A_B: \(…)"
添加文字字符串 A_B:
作为前缀。打印在下一行的 A_C
字段也是如此。输出被重定向到文件 test2
.
field5
和输出文件 test3
的等效命令是
jq -r '"A_B: \(.A_B["Field5"])", "A_C: \(.A_C["Field5"])"' test > test3