Windows

在 jq 中使用條件格式 - PowerShell

  • April 4, 2022

這是這個問題的後續問題,由另一個人提供。我有以下來自網路伺服器的輸出:

{
   "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的 if tier: "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'

引用自:https://unix.stackexchange.com/questions/697992