Linux 中的 JQ 命令使用实例
发布时间:2022-02-17 02:29:39 所属栏目:Linux 来源:互联网
导读:JSON 是一种数据表示格式,用于在应用程序的不同层之间存储和传输数据;它将数据存储在键:值对中。在文章中,我们将学习使用 JQ 命令在shell 中操作和处理 JSON 数据。 如何安装JQ命令 在Centos8中使用下面命令安装jq: 复制 [root@localhost ~]# dnf -y
JSON 是一种数据表示格式,用于在应用程序的不同层之间存储和传输数据;它将数据存储在键:值对中。在文章中,我们将学习使用 JQ 命令在shell 中操作和处理 JSON 数据。 如何安装JQ命令 在Centos8中使用下面命令安装jq: 复制 [root@localhost ~]# dnf -y install jq 语 法 现在我们可以开始使用 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"}} 使用 cat 命令打印到标准输出的数据是无组织和混乱的。我们可以使用 JQ 命令和“.”来组织这些数据,使用.来筛选: 复制 [root@localhost ~]# jq '.' employee.json { "workers": { "name": "John Brooks", "id": "003" } } 现在,数据变得更有条理、色彩丰富且更易于理解。从 API 访问数据时尤其需要此过滤器;API 中存储的数据可能非常无组织且令人困惑。 如何使用 JQ 命令访问属性 .字段过滤器和 JQ 命令可用于访问 shell 中的对象属性。 如果我们只想访问单个属性并将其打印到标准输出,那么我们可以使用.字段运算符。例如,要访问工人的属性,我们可以使用以下命令: 复制 [root@localhost ~]# jq '.workers' employee.json { "name": "John Brooks", "id": "003" } 我们还可以使用.字段运算符访问属性中存在的项目。要访问工人属性中的名称项,我们将使用: 复制 [root@localhost ~]# jq '.workers.name' employee.json "John Brooks" 如何使用 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"}] 要输出 JSON 文件中存在的所有数组,我们将运行以下命令: 复制 [root@localhost ~]# jq '.[]' employee.json { "name": "John Brooks", "id": "003" } { "name": "Randy Park", "id": "053" } { "name": "Todd Gray", "id": "009" } 要仅输出第二个数组,我们可以通过以下方式修改上述命令: 复制 [root@localhost ~]# jq '.[1]' employee.json { "name": "Randy Park", "id": "053" } 请记住,数组从索引 0 开始的。 我们还可以使用 .字段 运算符访问数组中存在的属性。例如,如果我们想访问第三个数组中的 name 属性,那么我们将运行以下命令: 复制 [root@localhost ~]# jq '.[2].name' employee.json "Todd Gray" 类似地,要访问数组中的所有名称属性,我们可以执行以下命令: 复制 [root@localhost ~]# jq '.[].name' employee.json "John Brooks" "Randy Park" "Todd Gray" (编辑:沧州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐