admin 管理员组

文章数量: 1184232


2024年3月19日发(作者:idea代码运行快捷键)

`jq` 是一个轻量级且灵活的命令行 JSON 处理器。使用 `jq`,你可以解析、过滤、映射和转

换结构化数据。以下是一些 `jq` 的常用命令和表达式的详细介绍:

### 1. 输出 JSON 文件

这个命令会将整个 JSON 文件转化为格式化输出,在没有任何过滤的情况下输出所有内容。

```bash

jq '.'

```

### 2. 过滤和提取键

你可以提取某个特定的键(字段)的值:

```bash

jq '.key' # 单个字段

jq '.key1, .key2' # 提取多个字段

```

### 3. 路径表达式

路径表达式允许你深入嵌套的对象:

```bash

jq '.2' # 嵌套字段

```

### 4. 数组操作

你可以操作 JSON 数组,例如提取数组中的第一个元素或最后一个元素:

```bash

jq '.array[0]' # 第一个元素

jq '.array[-1]' # 最后一个元素

jq '.array[2:4]' # 提取数组切片(从索引2到索引4的前一项)

```

### 5. 管道和过滤器

`jq` 支持管道操作(`|`),就像在 shell 中那样:

```bash

jq '.users[] | .name' # 提取数组中每个用户的名字

```

### 6.映射和变换

可以使用 `map` 函数对数组中的每个元素应用变换:

```bash

jq '.array | map(.key)' # 将数组中每个元素的 'key' 提取出来形成新的数组

```

### 7. 使用条件和比较

`jq` 支持使用条件表达式:

```bash

jq 'if .key == "value" then "Match" else "No match" end'

```

### 8. 创建自定义输出

`jq` 允许你创建自定义格式的输出:

```bash

jq '{"newKey": .key1, "newKey2": .key2}' # 创建一个新的 JSON 对象

jq '[.array[] | {user: .name, age: .age}]' # 将数组映射到新的格式

```

### 9. 进行数学运算

对数字进行数学运算是可行的:

```bash

jq '.array[] | .number * 2' # 对数组中每一个数值字段进行乘以2的运算

```

### 10. 在数组或对象中添加/更新元素

`jq` 允许你向数组或对象中添加或更新元素:

```bash

jq '.array += ["newElement"]' # 向数组添加新元素

jq '.key |= . + "appendedString"' # 更新或者添加对象的键值

```

### 11. 删除键

你可以从 JSON 对象中删除键:

```bash

jq 'del(.key)' # 删除指定的键

```

### 12. 处理多背书文件和字符串

`jq` 还允许你处理来自多个文件的 JSON:

```bash

jq '.key' # 顺序处理多个文件

```

对于字符串凭借:

```bash

jq '.key1 + ", " + .key2' # 串接两个字段的值

```

### 13. 使用环境变量

可以让 `jq` 使用 shell 环境变量:

```bash

NAME="myName" jq --arg username "$NAME" '.user = $username'

```

`jq` 非常强大,你可以通过合并使用不同的过滤器和表达式来完成几乎所有类型的 JSON

数据处理工作。

请记住,要使用 `jq`,你首先需要将其安装到你的系统中。在大多数 Linux 发行版中,可以

通过包管理器(如 apt 或 yum)轻松安装 `jq`。


本文标签: 数组 表达式 使用 文件 输出