2017-08-08 79 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命令。 –