【发布时间】:2020-03-02 22:21:19
【问题描述】:
我有一个 JSON 格式的包数据列表,如下所示:
[
{
"Package": "pyasn1",
"Version": "0.4.6",
"DownloadURL": "https://files.pythonhosted.org/packages/3d/50/5ce5dbe42eaf016cb9b062caf6d0f38018454756d4feb467de3e29431dae/pyasn1-0.4.6-py2.4.egg"
},
{
"Package": "cachetools",
"Version": "3.1.1",
"DownloadURL": "https://files.pythonhosted.org/packages/08/6a/abf83cb951617793fd49c98cb9456860f5df66ff89883c8660aa0672d425/cachetools-4.0.0-py3-none-any.whl"
}
]
我想生成一个项目列表,其中.DownloadURL 不包含.Version 中的字符串。
我试过了,但它似乎不起作用:
jq '.[]|select(.DownloadURL | contains(.Version)| not)'
我收到以下错误:
jq: error (at <stdin>:11): Cannot index string with string "Version"
exit status 5
我能够做到以下...
jq '.[]|select(.DownloadURL | contains("0.4.6")| not)'
...它给出了我期望的结果:
{
"Package": "cachetools",
"Version": "3.1.1",
"DownloadURL": "https://files.pythonhosted.org/packages/08/6a/abf83cb951617793fd49c98cb9456860f5df66ff89883c8660aa0672d425/cachetools-4.0.0-py3-none-any.whl"
}
有没有办法将.Version 的内容与contains() 函数一起使用,或者有更好的方法吗?我已经设置了a playground with the data here。
谢谢!
【问题讨论】: