【问题标题】:Lookup filtering with jq使用 jq 进行查找过滤
【发布时间】:2018-11-05 10:05:39
【问题描述】:

像这样给出一个 JSON 字符串,

[
  {
    "id": 1,
    "name": "Arthur",
    "age": "21"
  },
  {
    "id": 2,
    "name": "Richard",
    "age": "32"
  }
]

如何按姓名过滤并获取年龄?
例如,给定名称为"Richard",让jq 返回"32"。谢谢。

【问题讨论】:

    标签: json filtering jq


    【解决方案1】:
    $ jq --arg name Richard '.[] | select(.name==$name) | .age' input.json
    "32"
    

    在 Windows 中像这样使用 jq 时,引用必须适合 Windows。

    【讨论】:

    • 哇,感谢您惊人的快速回复。我试图自己找到答案,并被programminghistorian.org/en/lessons/json-and-jq 引导到思考jq '.[] | select(.name) | test("Richard"))',为什么它不起作用?我得到jq: error: syntax error, unexpected INVALID_CHARACTER, expecting $end
    • BTW peak,一个附带问题,有什么简单的方法可以从退货中删除引号(")?我实际上想要32,但我总是在任何回报中得到报价。因此,我在 OP 中要求"32",以使其更容易。
    • 1. test(_) 需要一个字符串输入。 2. 你可以使用 -r 命令行选项。
    猜你喜欢
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    相关资源
    最近更新 更多