문자열에서 값을 얻는 방법은 무엇입니까?

문자열에서 값을 얻는 방법은 무엇입니까?

다음과 같은 컬 출력이 있습니다.

{
    "코드": "알았어",
    "노선":[{
        "기하학": "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합계 값 쌍을 두 개의 탭으로 구분된 필드로 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분명히 데이터로 수행해야 하는 작업에 따라 다른 명령(예: )을 사용하여 기간+거리 쌍의 결과 목록을 구문 분석할 수 있습니다 .

관련 정보