1

curl で CrossRef API を使用して、この論文の著者名を取得しようとしています。

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を使用することを考えましたが、取得する方法がわかりませんでした:

「ファビオ・ファッキネリ、アンドレアスPMウェーバー」

解決策を知っていますか (jq であってはなりません)。

4

3 に答える 3

0

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.
于 2017-06-05T19:05:38.493 に答える