`jq` 是一个轻量级且灵活的命令行 JSON 处理器。使用 `jq`,你可以解析、过滤、映射和转换结构化数据。以下是一些 `jq` 的常用命令和表达式的详细介绍:
### 1. 输出 JSON 文件
这个命令会将整个 JSON 文件转化为格式化输出,在没有任何过滤的情况下输出所有内容。
```bash
jq '.' input.json
```
### 2. 过滤和提取键
你可以提取某个特定的键(字段)的值:
```bash
jq '.key' input.json  # 单个字段
jq '.key1, .key2' input.json  # 提取多个字段
```
### 3. 路径表达式
路径表达式允许你深入嵌套的对象:
```bash
jq '.key1.key2' input.json  # 嵌套字段
```
### 4. 数组操作
你可以操作 JSON 数组,例如提取数组中的第一个元素或最后一个元素:
```bash
jq '.array[0]' input.json          # 第一个元素
jq '.array[-1]' input.json        # 最后一个元素
jq '.array[2:4]' input.json        # 提取数组切片(从索引2到索引4的前一项)
```
### 5. 管道和过滤器
`jq` 支持管道操作(`|`),就像在 shell 中那样:
```bash
linux字符串转数组jq '.users[] | .name' input.json  # 提取数组中每个用户的名字
```
### 6.映射和变换
可以使用 `map` 函数对数组中的每个元素应用变换:
```bash
jq '.array | map(.key)' input.json  # 将数组中每个元素的 'key' 提取出来形成新的数组
```
### 7. 使用条件和比较
`jq` 支持使用条件表达式:
```bash
jq 'if .key == "value" then "Match" else "No match" end' input.json
```
### 8. 创建自定义输出
`jq` 允许你创建自定义格式的输出:
```bash
jq '{"newKey": .key1, "newKey2": .key2}' input.json  # 创建一个新的 JSON 对象
jq '[.array[] | {user: .name, age: .age}]' input.json # 将数组映射到新的格式
```
### 9. 进行数学运算
对数字进行数学运算是可行的:
```bash
jq '.array[] | .number * 2' input.json  # 对数组中每一个数值字段进行乘以2的运算
```
### 10. 在数组或对象中添加/更新元素
`jq` 允许你向数组或对象中添加或更新元素:
```bash
jq '.array += ["newElement"]' input.json    # 向数组添加新元素
jq '.key |= . + "appendedString"' input.json # 更新或者添加对象的键值
```
### 11. 删除键
你可以从 JSON 对象中删除键:
```bash
jq 'del(.key)' input.json  # 删除指定的键
```
### 12. 处理多背书文件和字符串
`jq` 还允许你处理来自多个文件的 JSON:
```bash
jq '.key' input1.json input2.json  # 顺序处理多个文件
```
对于字符串凭借:
```bash
jq '.key1 + ", " + .key2' input.json  # 串接两个字段的值
```
### 13. 使用环境变量
可以让 `jq` 使用 shell 环境变量:
```bash
NAME="myName" jq --arg username "$NAME" '.user = $username' input.json
```
`jq` 非常强大,你可以通过合并使用不同的过滤器和表达式来完成几乎所有类型的 JSON 数据处理工作。
请记住,要使用 `jq`,你首先需要将其安装到你的系统中。在大多数 Linux 发行版中,可以通过包管理器(如 apt 或 yum)轻松安装 `jq`。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。