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"
]

おすすめ記事