📜  jq 示例 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:02:09.202000             🧑  作者: Mango

jq 示例 - Shell-Bash

如果你是一个Shell或Bash程序员,你一定会经常碰到需要处理和操作JSON数据的情况。这时,一个非常有用的工具就是jq。

jq是一个命令行工具,它可以在Shell或Bash中处理和操作JSON数据。它提供了非常方便的方法来查询、筛选、修改和转换JSON数据。下面是一些使用jq的示例,让你更好的了解它。

安装

在大多数Linux发行版中,你可以通过包管理器来安装jq。例如,在Debian/Ubuntu中,你可以使用下面的命令来安装jq:

sudo apt-get install jq

如果你使用Mac OS X,你可以通过Homebrew来安装jq:

brew install jq
使用
查询

首先我们可以使用jq查询JSON数据的一部分。假设我们有一下JSON数据:

{
    "name": "John",
    "age": 30,
    "city": "New York",
    "pets": [
        {
            "name": "Rex",
            "type": "dog"
        },
        {
            "name": "Mittens",
            "type": "cat"
        }
    ]
}

我们可以使用下面的jq命令来查询"name"属性的值:

$ jq '.name' data.json
"John"

我们也可以使用下面的jq命令来查询"pets"数组中所有宠物的名字:

$ jq '.pets[].name' data.json
"Rex"
"Mittens"
筛选

我们也可以使用jq来筛选JSON数据。比如,我们可以使用下面的jq命令来只输出age属性的值大于等于30的JSON数据:

$ jq '. | select(.age >= 30) | {name, age}' data.json
{
  "name": "John",
  "age": 30
}
修改

除了查询和筛选JSON数据,我们也可以使用jq来修改JSON数据。比如,我们可以使用下面的jq命令来将name属性的值改为"Jack":

$ jq '.name |= "Jack"' data.json
{
  "name": "Jack",
  "age": 30,
  "city": "New York",
  "pets": [
    {
      "name": "Rex",
      "type": "dog"
    },
    {
      "name": "Mittens",
      "type": "cat"
    }
  ]
}
转换

最后,我们可以使用jq来将JSON数据转换为其他格式,比如CSV。比如,我们可以使用下面的jq命令来将我们的JSON数据转换成一个CSV文件:

$ jq -r '["name","age"], (. | [.name, .age]) | @csv' data.json > data.csv

这将生成一个data.csv文件,它的内容如下所示:

"name","age"
"John",30
结论

jq是一个非常有用的工具,它可以帮助你在Shell和Bash中方便的处理和操作JSON数据。如果你是一个Shell或Bash程序员,我强烈建议你掌握这个工具的使用。