将 JSON 中的键值对作为 CLI 进行 Grep

将 JSON 中的键值对作为 CLI 进行 Grep

我有一个带有 JSON 的大数据日志。一个 JSON 元素如下所示:

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

我想 grep 所有包含 "TrackingEnabled" : "1" 的行并将其保存到另一个文件中。我还想使用以下命令:

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

相关内容