使用jq获取值,然后使用该值作为键来获取另一个值

问题描述 投票:1回答:2

我有几百个分类ID,我使用curljqhttp://taxonomy.jgi-psf.org/tax/accession中提取相关值。

有没有办法管jq自己,所以我可以使用“level”的值作为另一个查询的关键?

对于这个例子,我想将这两个命令合并为一个:

$ curl -s http://taxonomy.jgi-psf.org/tax/tax_id/48479 | jq '.[] | .level'

“兰花k的”

$ curl -s http://taxonomy.jgi-psf.org/tax/tax_id/48479 | jq '.[] | ."no rank".name'

“环境样本”

json web-scraping jq
2个回答
2
投票

您可以使用level属性值作为键:

$ curl -s http://taxonomy.jgi-psf.org/tax/tax_id/48479 | jq '.[] | .["\(.level)"].name'
"environmental samples"

0
投票

如果你愿意,这里有一个替代解决方案:使用jtc unix实用程序:

bash $ curl -s http://taxonomy.jgi-psf.org/tax/tax_id/48479 | jtc -w'<level>l<val>v[^0]<val>t[name]'
"environmental samples"
bash $ 

步行路径的细分(-w)

  • <level>l通过标签level找到JSON元素
  • <val>v - 记住名称为val的名称空间中找到的值(可能是任何东西)
  • [^0]将搜索路径重置为JSON根目录
  • <val>t通过存储在命名空间中的标记(标签)找到一个JSON元素,如val
  • [name]从找到的JSON对象中选择name记录
© www.soinside.com 2019 - 2024. All rights reserved.