从CrossRef获取作者姓名(从JSON中获取文本)
我试图通过使用CrossRef API和curl来获取的作者名称从CrossRef获取作者姓名(从JSON中获取文本),json,string,bash,jq,doi,Json,String,Bash,Jq,Doi,我试图通过使用CrossRef API和curl来获取的作者名称 curl -LH "Accept: application/citeproc+json" http://dx.doi.org/10.3389/fpls.2011.00050 | jq .author 当然,我会得到一个JSON作为响应,但需要纯文本进行进一步的bash处理: [ { "given": "Fabio", "family": "Facchinelli", "affiliation": []
curl -LH "Accept: application/citeproc+json" http://dx.doi.org/10.3389/fpls.2011.00050 | jq .author
当然,我会得到一个JSON作为响应,但需要纯文本进行进一步的bash处理:
[
{
"given": "Fabio",
"family": "Facchinelli",
"affiliation": []
},
{
"given": "Andreas P. M.",
"family": "Weber",
"affiliation": []
}
]
我曾想过使用jq,但不知道如何获得:
“法比奥·法奇内利,安德烈亚斯·p·M·韦伯”
你知道一个解决方案吗(不能是jq)?这里有一种方法可以通过
jq
实现这一点:
... | jq '.author[] | .given + " " + .family' | jq -s 'join(", ")'
产出:
有一种方法可以通过
jq
:
... | jq '.author[] | .given + " " + .family' | jq -s 'join(", ")'
产出:
可以使用sed脚本执行此操作:
$ cat json.sed
/"given":/{
s/^.*"given"://
s/[",]//g
h
}
/"family":/{
s/^.*"family"://
s/[",]//g
G
s/\n/, /
p
}
那么就这样称呼它:
$ sed -n -f json.sed curl.json
Facchinelli, Fabio
Weber, Andreas P. M.
可以使用sed脚本执行此操作:
$ cat json.sed
/"given":/{
s/^.*"given"://
s/[",]//g
h
}
/"family":/{
s/^.*"family"://
s/[",]//g
G
s/\n/, /
p
}
那么就这样称呼它:
$ sed -n -f json.sed curl.json
Facchinelli, Fabio
Weber, Andreas P. M.
只需调用一次jq即可完成此任务:
... | jq '.author | map(.given + " " + .family) | join(", ")'
只需调用一次jq即可完成此任务:
... | jq '.author | map(.given + " " + .family) | join(", ")'