2017-08-08 75 views
0

需要解析以下關鍵字,其中郵政編碼== 73707802.例如,需要搜索狀態關鍵字和名稱,其中一個郵政編碼是73707802.因此,如果我搜索73707802,它應該返回所有名稱和密鑰(鍵名郵編)jq解析子陣列中的元素

12 abc 73707802 
32 cde 73707802 
99 xyz 73707802 

在此先感謝..

{ 
    "states": [ 
    { 
     "key": "12", 
     "name": "abc", 
     "city": { 
     "zipcodes": [ 
      73707802, 
      71444504, 
      72646331, 
      73707802 
     ] 
     } 
    }, 
    { 
     "key": "32", 
     "name": "cde", 
     "city": { 
     "zipcodes": [ 
      71444504, 
      72646331, 
      73707802 
     ] 
     } 
    }, 
    { 
     "key": "99", 
     "name": "xyz", 
     "city": { 
     "zipcodes": [ 
      72754781, 
      71444504, 
      72646331, 
      73707802 
     ] 
     } 
    } 
    ] 
} 

回答

1

下面是使用的解決方案和--arg選項選擇索引

.states[] 
| select(.city.zipcodes | index($zip|tonumber)) 
| "\(.key) \(.name) \($zip)" 

注意,在你的榜樣,你只告訴你搜索,但如果你想顯示其他郵編以及可改變最終格式字符串中的zip文件。

如果你把上面filter.jq過濾器和您的數據是在data.json你可以像這樣運行:

$ jq -r --arg zip 73707802 -f filter.jq data.json 
12 abc 73707802 
32 cde 73707802 
99 xyz 73707802 
+0

感謝很多關於這個..實際上需要在Perl腳本中使用此,所以是尋找單線jq命令。 –