Linux 中的 JQ 命令使用实例
原创Linux 中的 JQ 命令使用实例
JQ 是一个轻量级且灵活的命令行 JSON 处理器,它允许用户从 JSON 数据中提取、过滤和转换数据。JQ 在 Linux 系统中非常受欢迎,特别是在处理 JSON 数据时。本文将介绍 JQ 命令的基本用法和一些实用的实例,帮助您更好地懂得和使用 JQ。
1. 安装 JQ
在起始使用 JQ 之前,您需要确保您的系统已经安装了 JQ。大多数 Linux 发行版都提供了 JQ 的包管理器安装方法。以下是在不同发行版中安装 JQ 的方法:
# 在 Ubuntu/Debian 系统中
sudo apt-get update
sudo apt-get install jq
# 在 CentOS/RHEL 系统中
sudo yum install jq
# 在 Fedora 系统中
sudo dnf install jq
2. JQ 基本用法
JQ 命令的基本用法如下:
jq [选项] [文件名或JSON字符串]
以下是一些常用的 JQ 选项:
-h
或--help
:显示 JQ 的帮助信息。-V
或--version
:显示 JQ 的版本信息。-c
或--compact-output
:以紧凑的格式输出导致。-r
或--raw-output
:以原始格式输出导致。-o
或--output-format
:指定输出格式,如 json, yaml, csv 等。
3. JQ 实例:获取 JSON 数据中的某个值
假设我们有一个名为 `data.json` 的文件,内容如下:
{
"name": "张三",
"age": 30,
"address": {
"city": "北京",
"district": "朝阳区"
}
}
要获取 `name` 字段的值,可以使用以下命令:
$ jq '.name' data.json
张三
这里,点号(`.`)即当前作用域,后面跟着字段名即可获取该字段的值。
4. JQ 实例:获取嵌套 JSON 数据中的值
要获取嵌套 JSON 数据中的值,可以使用点号(`.`)和方括号(`[]`)来指定路径。以下示例获取 `address.city` 的值:
$ jq '.address.city' data.json
北京
5. JQ 实例:过滤 JSON 数据
使用 `filter` 关键字可以过滤 JSON 数据,只保留满足条件的元素。以下示例过滤出所有 `age` 大于 25 的对象:
$ jq '.[] | select(.age > 25)' data.json
{
"name": "张三",
"age": 30,
"address": {
"city": "北京",
"district": "朝阳区"
}
}
6. JQ 实例:修改 JSON 数据
使用 `def` 关键字可以定义一个函数,然后使用该函数来修改 JSON 数据。以下示例将 `name` 字段的值修改为 "李四":
$ jq 'def change_name: "李四"; .name = change_name' data.json
{
"name": "李四",
"age": 30,
"address": {
"city": "北京",
"district": "朝阳区"
}
}
7. JQ 实例:添加 JSON 数据
使用 `insert` 关键字可以添加新的元素到 JSON 数据中。以下示例在 `address` 对象中添加一个新的字段 `zip`:
$ jq '.address.zip = "100000"' data.json
{
"name": "张三",
"age": 30,
"address": {
"city": "北京",
"district": "朝阳区",
"zip": "100000"
}
}
8. JQ 实例:删除 JSON 数据
使用 `del` 关键