CLI로 JSON의 Grep 키-값 쌍

CLI로 JSON의 Grep 키-값 쌍

JSON을 사용한 빅데이터 로그가 있습니다. JSON 요소는 다음과 같습니다.

{
  "context": {
    "callback": {
      "Data": {
        "LastSessionTime": "2020-06-07T09:16:19Z",
        "TrackingEnabled": "1",
        "Language": "en"
      }
    }
  }
}

"TrackingEnabled": "1"이 포함된 모든 줄을 grep하여 다른 파일에 저장하고 싶습니다. 또한 다음 명령을 사용하고 싶습니다.

grep "TrackingEnabled" : "1" data.log > tracked.log
grep -v "TrackingEnabled" : "1" data.log > untracked.log

하지만 오류가 발생합니다.

grep: :: No such file or directory
grep: 1: No such file or directory

누구든지 해결책을 제안할 수 있나요?

답변1

...도 아니다올바른 구문 분석 도구입니다, 사용대신에:

jq -r '
     .context.callback.Data |
     select(.TrackingEnabled == "1") |
     "TrackingEnabled: " + .TrackingEnabled
' file.json

산출

TrackingEnabled: 1

그리고 댓글의 새로운 요청은 다음과 같습니다.

jq -r '
    [
       .context.callback.Data |
       select(.TrackingEnabled == "1") |
       "TrackingEnabled: " + .TrackingEnabled, .LastSessionTime
    ]
' file.json

산출

[
  "TrackingEnabled: 1",
  "2020-06-07T09:16:19Z"
]

관련 정보