【问题标题】:Get id where values are true with jq使用 jq 获取值为 true 的 id
【发布时间】:2020-04-01 08:03:22
【问题描述】:

我正在尝试遍历 json 文件中的每个对象并获取 id 名称,其中 trunktrue。现在我只得到每个对象的id

json 文件:

[
  {
    "id": "bmw",
    "color": "blue",
    "trunk": true,
    "seat": false
  },
  {
    "id": "merceredes",
    "color": "blue",
    "trunk": false,
    "seat": false
  }

]

bash 脚本:

/bin/bash
for id in `jq -r -c .[] file.json`; do
  echo $id | jq -r .id
done

【问题讨论】:

    标签: json bash select jq


    【解决方案1】:

    您尚未指定所需的精确输出形式,但以下说明了解决问题的一种方法:

    jq '.[] | select(.trunk == true) | .id' file.json
    

    如果 .trunk 是布尔值,您可以将 select 参数简化为 .trunk

    【讨论】:

    • 感谢@peak 的回复。在for-loop 的回显行中,我有以下内容:echo $id | jq .[] | select(.trunk == true) | .id 并且出现此错误:./config.sh: line 4: syntax error near unexpected token (' ./config.sh: 第 4 行:` echo $id | jq .[] | select(.树干 == true) | .id' `
    • jq.id 之后添加单个 qoutes 后,我收到:jq: error (at <stdin>:1): Cannot index string with string "trunk"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多