如何从字符串中获取值?

如何从字符串中获取值?

我有下面的卷曲输出:

{
    “代码”:“好的”,
    “路线”:[{
        "几何": "mlbj@qsp}VlEi@hAvHRCiKyr@gBkK`MmBN`AcC^QaA}GbAm@PRx@lDzUu@L?V",
        “腿”:[{
            “脚步”: [],
            “概括”: ””,
            “体重”:356.9,
            “持续时间”:356.9,
            “距离”:2567.6
        }],
        "weight_name": "可路由性",
        “体重”:356.9,
        “持续时间”:356.9,
        “距离”:2567.6
    }],
    “航点”:[{
        "提示": "FowshhuMLIYyAAAAfAAAAF0BAAAAAAAAgPWmQVj0TEJA9hBDAAAAADIAAAB8AAAAXQEAAAAAAADvOAAA2WB8B2bEawDqYHwHasRrAAcAfwpAAACy",
        “距离”:1.929525,
        “姓名”: ””,
        “位置”:[125.591769,7.06263]
    }, {
        "提示": "w1ACh____38VAAAALAAAAAgAAABXAAAAwBUMQdyhGkH5DFdA6ToRQhUAAAAsAAAACAAAAFcAAADvOAAAbXN8B9rFawB6c3wHkcVrAAEAPxBAAACy",
        “距离”:8.199417,
        “姓名”: ””,
        “位置”:[125.596525,7.063002]
    }]
}

我想从部分获取duration和的值。在这个例子中,分别是和。distancelegsroutes356.92567.6

“代码”:“好的”,
    “路线”:[{
        "几何": "mlbj@qsp}VlEi@hAvHRCiKyr@gBkK`MmBN`AcC^QaA}GbAm@PRx@lDzUu@L?V",
        “腿”:[{
            “脚步”: [],
            “概括”: ””,
            “体重”:356.9,
            “持续时间”:356.9,
            “距离”:2567.6

我只知道如何执行curl脚本,但我不知道如何从中提取所需的值,所以我请求你的帮助。

答案1

以下jq命令会将数组中的每个durationdistance值对提取legs为两个制表符分隔的字段。将对routes数组中的所有条目执行此操作。

jq -r '.routes[].legs | map([.duration, .distance]|@tsv)[]'

您通常会将 的输出通过管道传输curl到此命令中:

curl -s '...some URL...' | jq -r '...as above...'

鉴于问题中的数据,这将生成

356.9   2567.6

显然,您可以使用其他命令(例如 )解析生成的持续时间+距离对的列表,具体awk取决于您需要如何处理这些数据。

相关内容