Выходной ключ со значением - PullRequest
0 голосов
/ 10 марта 2019

Учитывая объект json (хранится как переменная bash $ test)

{
  "foo": {
    "name": "my foo"
  },
  "bar": {
    "name": "my bar"
  }
}

Если я хочу вывести

{
  "foo": {
    "name": "my foo"
  }
}

Похоже, я должен использовать

$ jq '. | with_entries(select(.key == "foo"))' <<<$test
{
  "foo": {
    "name": "my foo"
  }
}

Есть ли более простой метод для достижения того же результата?

Ответы [ 2 ]

2 голосов
/ 10 марта 2019

Да!

jq '{foo}'

Пояснение

{foo} является сокращением для {"foo": .foo}

: -)

Предостережение

Сокращенное обозначениеФорма может использоваться только для имен ключей, которые не являются jq ключевыми словами (например, if).Однако:

$ jq -n '{"if"}'
{
  "if": null
}
0 голосов
/ 10 марта 2019

альтернативно, с jtc:

bash $ <<<$test jtc -w[foo] -pp
{
   "foo": {
      "name": "my foo"
   }
}
bash $ 
...