我有這個 JSON:
{
"time": "2022-02-28T22:00:55.196Z",
"severity": "INFO",
"params": [
{"key": "state", "value": "pending"},
{"key": "options", "value": "request"},
{"key": "description", "value": "[FILTERED]"}
],
"content_length": "231"
}
我想列印鍵與狀態和選項匹配的鍵值對以及時間及其值。我可以使用以下命令列印時間和所有鍵值對,但不確定如何提取特定的鍵值對。
jq '"time:\(.time)" ,[.params[] | "key:\(.key)" ,"value:\(.value)"]' test.json
這給出了輸出:
"time:2022-02-28T22:00:55.196Z"
[
"key:state",
"value:pending",
"key:options",
"value:request",
"key:description",
"value:[FILTERED]"
]
但我想要的輸出是:
"time:2022-02-28T22:00:55.196Z"
"key:state",
"value:pending",
"key:options",
"value:request"
uj5u.com熱心網友回復:
上述問題的一種解決方案是:
< test.json jq '
"time:\(.time)",
[.params[] | select(.key|IN("state","options"))
| "key:\(.key)" ,"value:\(.value)"]
' | sed '/^[][]$/d'
但是,幾乎可以肯定的是稍微修改要求以使輸出格式不那么特殊。這也應該更容易制定更清潔(例如 only-jq)的解決方案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/435542.html
