Sed
將 JSON 中的鍵值對grep 為 CLI
我有一個帶有 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
有人可以提出解決方案嗎?
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" ]