使用 jq 在一个 JSON 文件中处理多个 "elements"

Handling multiple "elements" in one JSON file with jq

我有一个 JSON 文件,其中包含多个 JSON-"elements",例如

{
  "name": "Name 1",
  "foo": "Bar"
}
{
  "id": 123,
  "bar": "Foo"
}

我只对第二个元素感兴趣,需要通过元素的 'index' 进行查询(即我不知道该元素将包含哪些字段)。

如何使用 jq 实现此目的?

有几种可能的答案,具体取决于您拥有的 jq 版本,因此在这里我将重点介绍一个通用且通常有用的答案。

  1. 使用 -s ("slurp") 选项获取第二个 JSON 实体,如 jq -s '.[1]'

  2. 在 jq 1.4 及更高版本中,jq 过滤器 .[] 在对象上使用时会保留键的顺序。 (使用 jq 1.3,如果你对键名一无所知,你可能会倒霉。)例如,使用 jq 1.4 或更高版本:

$ jq '.[]' {"b":1, "a":2} 1 2