文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Linux jq 命令讲解与实战操作

2024-11-30 10:10

关注

图片

GitHub 地址:https://github.com/stedolan/jqjq 官方网站: https://stedolan.github.io/jq/

二、jq 命令安装

yum install epel-release
yum install -y jq

三、jq 命令语法与示例详解

jq 命令有很多参数和选项,可以帮助你处理和转换 JSON 数据。以下是一些常用的 jq 命令参数和选项:

1)基本用法

jq [options] [filter] [file]

2)常用选项

3)查询和过滤

当使用 jq 进行查询和过滤 JSON 数据时,你可以根据需要执行各种操作。以下是一些常见的查询和过滤示例,假设我们有以下 JSON 数据:

[
  {
    "name": "Alice",
    "age": 25,
    "city": "New York"
  },
  {
    "name": "Bob",
    "age": 30,
    "city": "Los Angeles"
  },
  {
    "name": "Charlie",
    "age": 22,
    "city": "Chicago"
  }
]

1、选择字段

查询并选择所有人的姓名:

cat data.json | jq '.[].name'

输出:

"Alice"
"Bob"
"Charlie"

2、过滤

选择年龄大于 25 岁的人的姓名和城市:

cat data.json | jq '.[] | select(.age > 25) | .name, .city'

输出:

"Bob"
"Los Angeles"

3、遍历数组

遍历并输出所有人的年龄:

cat data.json | jq '.[] | .age'

输出:

25
30
22

4、组合操作

选择年龄在 25 到 30 岁之间的人的姓名和城市,并按照姓名排序:

cat data.json | jq '.[] | select(.age >= 25 and .age <= 30) | .name, .city' | sort
"Alice"
"New York"
"Bob"
"Los Angeles"

这些只是一些基本的查询和过滤示例。jq 支持更多的操作和功能,你可以根据需要进行组合和定制。请根据你的数据和需求来调整和扩展这些示例。

4)修改和创建

使用 jq 进行 JSON 数据的修改和创建可以帮助你更新数据或添加新的字段。以下是一些示例,假设我们有以下 JSON 数据:

{
  "name": "Alice",
  "age": 25,
  "city": "New York"
}

1、修改字段值:

修改年龄字段的值为 26:

cat data.json | jq '.age = 26'

输出:

{
  "name": "Alice",
  "age": 26,
  "city": "New York"
}

2、创建新字段:

添加一个新的字段 country 并设置其值为 "USA":

cat data.json | jq '.country = "USA"'

输出:

{
  "name": "Alice",
  "age": 25,
  "city": "New York",
  "country": "USA"
}

3、组合操作:

修改年龄字段的值为 26,并添加一个新的字段 country:

cat data.json | jq '.age = 26 | .country = "USA"'

输出:

{
  "name": "Alice",
  "age": 26,
  "city": "New York",
  "country": "USA"
}

4、条件修改

如果年龄小于 30,则将城市修改为 "Chicago":

cat data.json | jq 'if .age < 30 then .city = "Chicago" else . end'

输出(由于年龄小于 30,城市被修改):

{
  "name": "Alice",
  "age": 25,
  "city": "Chicago"
}

这些示例演示了如何使用 jq 修改和创建 JSON 数据。你可以根据需要进行组合和调整,以实现你的需求。记住,jq 提供了强大的功能,可以进行更复杂的操作,可以根据文档和教程进一步学习。

5)运算符

jq 支持多种运算符,用于在 JSON 数据中执行数值运算、比较和逻辑操作。以下是一些常见的 jq 运算符示例,假设我们有以下 JSON 数据:

{
  "a": 10,
  "b": 5,
  "c": 15
}

1、数值运算

进行加法、减法、乘法和除法运算:

cat data.json | jq '.a + .b'
cat data.json | jq '.a - .b'
cat data.json | jq '.a * .b'
cat data.json | jq '.a / .b'

输出:

15
5
50
2

2、比较运算:

比较字段值,返回布尔结果:

cat data.json | jq '.a > .b'
cat data.json | jq '.a >= .c'
cat data.json | jq '.b < .c'

输出:

true
false
true

3、逻辑运算:

执行逻辑 AND、OR 和 NOT 操作:

cat data.json | jq '.a > 5 and .b < 10'
cat data.json | jq '.a > 15 or .b > 10'
cat data.json | jq 'not (.c > 20)'

输出:

true
true
false

4、条件运算:

使用 if 和 then 进行条件运算:

cat data.json | jq 'if .a > 10 then "Greater" else "Less or equal" end'

输出:

"Less or equal"

这些示例展示了 jq 中的一些常见运算符的用法。你可以根据需要进行更复杂的运算和组合操作,以实现你的需求。在处理 JSON 数据时,jq 提供了广泛的功能来执行各种操作。

6)变量和条件

在 jq 中,你可以使用变量和条件语句来处理和转换 JSON 数据。以下是一些示例,说明如何在 jq 中使用变量和条件语句,假设我们有以下 JSON 数据:

{
  "name": "Alice",
  "age": 25,
  "city": "New York"
}

1、使用变量:

将字段值存储到变量中,并在输出中使用变量:

cat data.json | jq '.age as $age | "Name: \(.name), Age: \($age)"'

输出:

"Name: Alice, Age: 25"

2、条件语句:

使用 if 和 then 进行条件判断:

cat data.json | jq 'if .age > 18 then "Adult" else "Minor" end'

输出:

"Adult"

3、条件判断和变量组合:

结合条件语句和变量,根据年龄输出不同的消息:

cat data.json | jq 'if .age > 18 then "Name: \(.name), Status: Adult" else "Name: \(.name), Status: Minor" end'

输出:

"Name: Alice, Status: Adult"

4、使用条件操作修改数据:

根据年龄字段的值,如果大于 30 则修改城市字段:

cat data.json | jq 'if .age > 30 then .city = "Chicago" else . end'

输出(由于年龄不大于 30,所以城市字段不变):

{
  "name": "Alice",
  "age": 25,
  "city": "New York"
}

这些示例演示了如何在 jq 中使用变量和条件语句来处理 JSON 数据。你可以根据需要进行组合和定制,以满足你的需求。jq 提供了强大的功能来处理和转换 JSON 数据,可以根据文档和教程进一步学习。

7)函数

jq 支持一些内置函数,如 length, keys, values, tostring 等,用于操作和处理 JSON 数据。

在 jq 中,你可以使用内置的函数来处理和转换 JSON 数据。以下是一些常见的 jq 函数示例,假设我们有以下 JSON 数据:

{
  "name": "Alice",
  "age": 25,
  "city": "New York",
  "scores": [85, 90, 78, 95]
}

1、length 函数:

获取数组的长度:

cat data.json | jq '.scores | length'

输出:

4

2、map 函数:

对数组中的每个元素应用转换操作:

cat data.json | jq '.scores | map(. * 2)'

输出:

[170,180,156,190]

3、keys 和 values 函数:

获取对象的键和值:

cat data.json | jq '. | keys'
cat data.json | jq '. | values'

输出:

["name","age","city","scores"]
["Alice",25,"New York",[85,90,78,95]]

4、to_entries 函数:

将对象转换为键值对数组:

cat data.json | jq '. | to_entries'

输出:

[
  {"key":"name","value":"Alice"},
  {"key":"age","value":25},
  {"key":"city","value":"New York"},
  {"key":"scores","value":[85,90,78,95]}
]

5、自定义函数:

使用自定义函数进行操作:

cat data.json | jq 'def average: reduce .[] as $item (0; . + $item) / length; .scores | average'

输出:

87

这些是一些常见的 jq 命令参数和选项,可以帮助你进行 JSON 数据的查询、过滤、修改和转换。你可以通过查阅 jq 的官方文档和教程,深入学习和掌握更多功能和用法。

来源:大数据与云原生技术分享内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯