如何从 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_BField2 的值 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