我试图使用curl从URL的json文件中获取值,然后使用jq命令(例如company)打印特定键。不幸的是,当我使用:
jq '.[] | .company' JB.json
我收到错误:
parse error: Invalid numeric literal at line 1, column 9
。我检查的下载文件少了一些,它看起来与url中的样子完全一样。
有人建议使用-R选项,但它会打印:
jq: error: Cannot iterate over string
文件的网址为:https://jobs.github.com/positions.json?description=python&location=new+york
答案 0 :(得分:1)
如果您使用curl -sS
来检索文件,则会跳过'//'样式的注释:
curl -Ss 'https://jobs.github.com/positions.json?description=python&location=new+york' | jq '.[] | .company'
"BentoBox"
"Aon Cyber Solutions"
"Sesame"
"New York University"
因此,大概您的JB.json包含“ //”样式的注释。最简单的解决方法可能是首先过滤掉前两行(例如使用sed
(或jq!))。
这是仅jq的解决方案:
< JB.json jq -Rr 'select( test("^//")|not)' |
jq '.[] | .company'