Json
如何使用 jq 提取 json 文件中的第一個欄位/值
我有一個包含以下內容的 JSON 文件:
{ "Message": { "greeting": "hello" } } { "Message": { "greeting": "Bonjour" } } { "Message": { "greeting": "Konnichiwa" } }
我只想提取具有
"greeting" : "hello"
. 我似乎無法在其上使用索引cat "$file" | jq -c "."
上述命令全部返回 3 條消息。我想問一下如何只提取第一條消息或 1 by 1。
您的輸入文件包含幾個 JSON 對象。用於
-s
將它們全部讀入單個數組,否則jq
將它們一一處理。然後,您可以通過指定其索引來列印第一個:jq -cs '.[0]'
假設您想要第一個 JSON 對象,它的
greeting
key 對應於 valuehello
,具體來說,不僅僅是第一個 JSON 對象。jq -s '[.[] | select(.Message.greeting == "hello")][0]' file.json
這會將 JSON 對象讀
file.json
入帶有-s
(--surp
) 的數組中。然後過濾此數組以查找包含.Message.greeting
具有 value 的鍵的任何對象hello
。所有這些對像都放入一個數組中,並返回其中的第一個。使用修改後的範例文件,
{ "Message": { "greeting": "Konnichiwa" } } { "Message": { "greeting": "hello", "id": 1 } } { "Message": { "greeting": "hello", "id": 2 } } { "Message": { "greeting": "Bonjour" } }
id
添加鍵只是為了區分兩個相同的對象,命令jq
返回{ "Message": { "greeting": "hello", "id": 1 } }