361

私はこのJsonを持っています

{
    "users": [
        {
            "first": "Stevie",
            "last": "Wonder"
        },
        {
            "first": "Michael",
            "last": "Jackson"
        }
    ]
}

jq を使用して、姓と名を連続して表示したいと思います。そのようです -

Stevie Wonder
Michael Jackson

これが私が得た距離です -

jq '.users[].first, .users[].last'

しかし、それは表示されます

"Stevie"
"Michael"
"Wonder"
"Jackson"

次の点に注意してください。

  1. 私が望まない二重引用符。
  2. いらないキャリッジリターン。
  3. ごちゃ混ぜです。私のクエリでは、最初にすべての名前が表示され、次にすべての姓が表示されます。ただし、最初と最後、最初と最後のペアが必要です。
4

8 に答える 8

483

文字列補間を使用することをお勧めします。

jq '.users[] | "\(.first) \(.last)"'

.users[]文字列補間を使用して文字列「.first .last」を生成するために、結果をパイプダウンしています。\(foo)構文は、での文字列補間に使用されますjq。したがって、上記の例では、"Stevie Wonder" (".users[].first .users[].second"要素ごとに動作) と "Michael Jackson" になります。

jq リファレンス:文字列補間

于 2015-07-14T22:04:31.260 に答える