我有一个带有 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
grep也不正则表达式是正确的解析工具json, 使用杰克反而:
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"
]