Windows
在 jq 中使用條件格式 - PowerShell
這是這個問題的後續問題,由另一個人提供。我有以下來自網路伺服器的輸出:
{ "status":"OK", "result":{ "string1":{ "variable":0 }, "string2":[ { "id":"XXXXX:XXXXX", "tier":"normal", "latitude":"01.XXXXX", "longitude":"02.XXXXX" }, { "id":"XXXXX:XXXXX", "tier":"normal", "latitude":"01.XXXXX", "longitude":"02.XXXXX" }, { "id":"XXXXX:XXXXX", "tier":"special", "latitude":"01.XXXXX", "longitude":"02.XXXXX" }, { "id":"XXXXX:XXXXX", "tier":"normal", "latitude":"01.XXXXX", "longitude":"02.XXXXX" } ] } }
我現在正在提取ID
jq -r '.result.string2[].id' responses.json
並將它們保存為responses.json
文件;這工作得很好。但是,我的問題是,我如何設置條件以便 jq 只會輸出我
id
的 iftier: "special"
?我試圖用這個執行緒中的答案來解決它,別名這兩個:jq -r '.result.string2[] | select(.tier == "special") | .id'responses.json jq -r '.result.string2[] | select(.tier == "special") | .id' responses.json
這在我的 Windows-PowerShell 中似乎不起作用。它給了我以下錯誤消息:
jq: error: special/0 is not defined at <top-level>, line 1: .result.string2[] | select(.tier == special) | .id jq: 1 compile error
謝謝回答!
您可能需要轉義雙引號,因為 powershell 不像 POSIX shell 那樣將它們保留在單引號中。
jq -r '.result.string2[] | select(.tier == \"special\") | .id'