json 값을 변수로 저장

json 값을 변수로 저장

명령에서 다음 출력을 얻습니다.

{
  "data": {
    "access-type": "ObjectRead",
    "access-uri": "/p/u4yRbnS_Yv29ivICXNWz-76BAgBqfln0SthBVYLZ3AdPOs9BKTQEH48MZEJNvXaT/n/bmjx6wj24zrv/b/season5/o/abcd.zip",
    "bucket-listing-action": null,
    "id": "tePBaSkrsUEBY+rKK0HiwraPn76TLD86BOsqm7dr3cqjNXp6026BouTf9kQoKzZk:abcd.zip",
    "name": "abcd.zip",
    "object-name": "abcd.zip",
    "time-created": "2022-10-27T02:20:17.430000+00:00",
    "time-expires": "2023-02-01T00:00:00+00:00"
  }
}

누군가 내가 가치를 추출하도록 도와 줄 수 있습니까?URI에 액세스위의 예를 기반으로 출력은 다음과 같아야 합니다.

/p/u4yRbnS_Yv29ivICXNWz-76BAgBqfln0SthBVYLZ3AdPOs9BKTQEH48MZEJNvXaT/n/bmjx6wj24zrv/b/season5/o/abcd.zip

답변1

나도 같이 갈게 jq. 귀하의 예에서는 다음과 같습니다(입력은 물론 명령에서 나옵니다).

myvar=$(commandX | jq -r '.data."access-uri"?')

답변2

사용sed

$ ... | sed -En ':a;/"data":/,/}/{n;/access-uri/s/[^:]*[^"]*"([^"]*).*/\1/p;ba}'
/p/u4yRbnS_Yv29ivICXNWz-76BAgBqfln0SthBVYLZ3AdPOs9BKTQEH48MZEJNvXaT/n/bmjx6wj24zrv/b/season5/o/abcd.zip

관련 정보