文字列から値を取得するには?

文字列から値を取得するには?

次のようなカール出力があります。

{
    "コード": "わかりました",
    "路線":[{
        "ジオメトリ": "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____38VAAAALAAAAgAAABXAAAAwBUMQdyhGkH5DFdA6ToRQhUAAAAsAAAACAAAAFcAAADvOAAAbXN8B9rFawB6c3wHkcVrAAEAPxBAAACy",
        「距離」: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

カールスクリプトを実行する方法だけを知っていますが、ここで必要な値を抽出する方法を知らないでください。

答え1

次のコマンドは、jq配列の各duration合計値のペアを2つのタブで区切られたフィールドにdistance抽出します。これは配列内のすべての項目に対して行われますlegsroutes

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

通常、出力を次のコマンドにパイプしますcurl

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

質問のデータが与えられると、次のものが生成されます。

356.9   2567.6

awk明らかに、データとして実行する必要がある操作に応じて、異なるコマンド(たとえば)を使用して、期間と距離のペアの結果のリストを解析できます。

関連情報