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`。
版权声明:本文标题:linux jq常用命令 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1710826452a575054.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论