次のようなカール出力があります。
{ "コード": "わかりました", "路線":[{ "ジオメトリ": "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
部分から合計値を取得したいです。この例では、それぞれとです。distance
legs
routes
356.9
2567.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
抽出します。これは配列内のすべての項目に対して行われますlegs
。routes
jq -r '.routes[].legs | map([.duration, .distance]|@tsv)[]'
通常、出力を次のコマンドにパイプしますcurl
。
curl -s '...some URL...' | jq -r '...as above...'
質問のデータが与えられると、次のものが生成されます。
356.9 2567.6
awk
明らかに、データとして実行する必要がある操作に応じて、異なるコマンド(たとえば)を使用して、期間と距離のペアの結果のリストを解析できます。