当前位置: 首页 > 科技观察

Linux中JQ命令使用示例

时间:2023-03-16 10:01:21 科技观察

JSON是一种数据表示格式,用于在应用程序的不同层之间存储和传输数据;它将数据存储在键:值对中。在本文中,我们将学习使用JQ命令在shell中操作和处理JSON数据。如何安装jq命令在Centos8中使用以下命令安装jq:[root@localhost~]#dnf-yinstalljqsyntax现在我们可以开始使用jq命令,因为它已成功安装在我们的系统上,但首先,让我们看一下查看jq命令的语法:jq[options][file...]jq[options]--args[strings...]jq[options]--jsonargs[JSON_TEXTS...]可以使用jq命令在许多不同的;它可以直接在JSON文件上使用,也可以与其他几个命令结合使用来解释JSON数据。JQ命令可以与不同的过滤器一起使用,例如“.”、“|”、“,”或“.[]”过滤器来组织JSON数据。JQ命令还采用不同的选项作为参数,例如--tab、--stream、--indentn、--unbuffered和-L目录选项。JQ命令的语法初看起来可能很复杂,但是阅读整篇文章后您就会熟悉它。如何使用JQ命令组织JSON数据JQ命令过滤器最简单和常用的功能。它们用于在将JSON数据打印到标准输出时组织和美化它。在这个例子中,我们有一个名为employee.json的JSON文件,我们需要将数据输出到标准输出:{"workers":{"name":"JohnBrooks","id":"003"}}我们可以使用cat命令显示数据:[root@localhost~]#catemployee.json{"workers":{"name":"JohnBrooks","id":"003"}}使用cat命令打印以标准输出的数据是杂乱无章的。我们可以使用JQ命令和“.”整理这些数据,使用。过滤:[root@localhost~]#jq'.'employee.json{"workers":{"name":"JohnBrooks","id":"003"}}数据现在更有条理、丰富多彩且更容易理解。从API访问数据时尤其需要此过滤器;存储在API中的数据可能非常杂乱无章且令人困惑。如何使用JQ命令访问属性。字段过滤器和JQ命令可用于访问shell中的对象属性。如果我们只想访问单个属性并将其打印到标准输出,那么我们可以使用.field运算符。例如,要访问工人的属性,我们可以使用以下命令:[root@localhost~]#jq'.workers'employee.json{"name":"JohnBrooks","id":"003"我们还可以使用.field运算符来访问属性中存在的项目。要访问worker属性中的名称项,我们将使用:[root@localhost~]#jq'.workers.name'employee.json"JohnBrooks"如何使用JQ命令访问数组项我们还可以使用.[]运算符访问并输出JSON文件中数组中存在的元素。对于此示例,我们将修改JSON文件以添加以下内容:[{"name":"JohnBrooks","id":"003"},{"name":"RandyPark","id":"053"},{"name":"ToddGray","id":"009"}]查看employee.json文件:[root@localhost~]#catemployee.json[{"name":"John"Brooks","id":"003"},{"name":"RandyPark","id":"053"},{"name":"ToddGray","id":"009"}]要输出JSON文件中存在的所有数组,我们将运行以下命令:[root@localhost~]#jq'.[]'employee.json{"name":"JohnBrooks","id":"003"}{"name":"RandyPark","id":"053"}{"name":"ToddGray","id":"009"}要只输出第二个数组,我们可以按照以下方式修改上面的命令:[root@localhost~]#jq'.[1]'employee.json{"name":"RandyPark","id":"053"}记住数组开始于索引0。我们还可以使用.field运算符访问数组中存在的属性。例如,如果我们想访问第三个数组中的name属性,那么我们将运行以下命令:[root@localhost~]#jq'.[2].name'employee.json"ToddGray"同样,要访问数组中的所有name属性,我们可以执行以下命令:[root@localhost~]#jq'.[].name'employee.json"JohnBrooks""RandyPark""ToddGray"数据被转换为更易读的格式并打印到Linux上的标准输出。JQ命令是围绕过滤器构建的,过滤器用于从JSON文件中查找和打印所需的数据。