良许Linux教程网 干货合集 Linux 中的 JQ 命令使用实例

Linux 中的 JQ 命令使用实例

JSON 是一种数据表示格式,用于在应用程序的不同层之间存储和传输数据;它将数据存储在键:值对中。在文章中,我们将学习使用 JQ 命令在shell 中操作和处理 JSON 数据。

如何安装JQ命令

在Centos8中使用下面命令安装jq

[root@localhost ~]# dnf -y install jq
image-20230720141654509
image-20230720141654509

语 法

现在我们可以开始使用 JQ 命令,因为它已经成功安装在我们的系统上,但首先,让我们看一下 JQ 命令的语法:

jq [options]  [file...]

jq [options] --args  [strings...]

jq [options] --jsonargs  [JSON_TEXTS...]

JQ 命令可以用多种不同的方式使用;它可以直接用于 JSON 文件,也可以结合其他几个命令来解释 JSON 数据。JQ 命令可以与不同的过滤器一起使用,例如“.”、“|”、“,”或“.[]”过滤器来组织 JSON 数据。

JQ 命令还采用不同的选项作为参数,例如 –tab、–stream、–indent n、–unbuffered 和 -L 目录选项。JQ 命令的语法乍一看可能很复杂,但阅读整篇文章后您就会熟悉它。

如何使用 JQ 命令组织 JSON 数据

JQ 命令过滤器最简单和常用的特性。它们用于在将 JSON 数据打印到标准输出时对其进行组织和美化。

在这个例子中,我们有一个名为 employee.json 的 JSON 文件,我们需要将数据输出到标准输出:

{"workers":{"name""John Brooks","id""003"}}

我们可以使用 cat 命令来显示数据:

[root@localhost ~]# cat employee.json 
{"workers":{"name""John Brooks","id""003"}}
image-20230720141715916
image-20230720141715916

使用 cat 命令打印到标准输出的数据是无组织和混乱的。我们可以使用 JQ 命令和“.”来组织这些数据,使用.来筛选:

[root@localhost ~]# jq '.' employee.json 
{
  "workers": {
    "name""John Brooks",
    "id""003"
  }
}
image-20230720141720006
image-20230720141720006

现在,数据变得更有条理、色彩丰富且更易于理解。从 API 访问数据时尤其需要此过滤器;API 中存储的数据可能非常无组织且令人困惑。

如何使用 JQ 命令访问属性

.字段过滤器和 JQ 命令可用于访问 shell 中的对象属性。

如果我们只想访问单个属性并将其打印到标准输出,那么我们可以使用.字段运算符。例如,要访问工人的属性,我们可以使用以下命令:

[root@localhost ~]# jq '.workers' employee.json 
{
  "name""John Brooks",
  "id""003"
}
image-20230720141732635
image-20230720141732635

我们还可以使用.字段运算符访问属性中存在的项目。要访问工人属性中的名称项,我们将使用:

[root@localhost ~]# jq '.workers.name' employee.json 
"John Brooks"
image-20230720141735862
image-20230720141735862

如何使用 JQ 命令访问数组项

我们还可以使用 .[] 运算符访问和输出 JSON 文件中数组中存在的元素。对于这个例子,我们将修改我们的 JSON 文件,添加下面内容:

[{"name""John Brooks","id""003"},{"name""Randy Park","id""053"},{"name""Todd Gray","id""009"}]

查看一下employee.json文件:

[root@localhost ~]# cat employee.json 
[{"name""John Brooks","id""003"},{"name""Randy Park","id""053"},{"name""Todd Gray","id""009"}]
image-20230720141750818
image-20230720141750818

要输出 JSON 文件中存在的所有数组,我们将运行以下命令:

[root@localhost ~]# jq '.[]' employee.json 
{
  "name""John Brooks",
  "id""003"
}
{
  "name""Randy Park",
  "id""053"
}
{
  "name""Todd Gray",
  "id""009"
}
image-20230720141754236
image-20230720141754236

要仅输出第二个数组,我们可以通过以下方式修改上述命令:

[root@localhost ~]# jq '.[1]' employee.json 
{
  "name""Randy Park",
  "id""053"
}
image-20230720141757089
image-20230720141757089

请记住,数组从索引 0 开始的。

我们还可以使用 .字段 运算符访问数组中存在的属性。例如,如果我们想访问第三个数组中的 name 属性,那么我们将运行以下命令:

[root@localhost ~]# jq '.[2].name' employee.json 
"Todd Gray"
image-20230720141801437
image-20230720141801437

类似地,要访问数组中的所有名称属性,我们可以执行以下命令:

[root@localhost ~]# jq '.[].name' employee.json 
"John Brooks"
"Randy Park"
"Todd Gray"

总 结

JQ 命令用于将 JSON 数据转换为更易读的格式并将其打印到 Linux 上的标准输出。JQ 命令是围绕过滤器构建的,过滤器用于从 JSON 文件中仅查找和打印所需的数据。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部