首页 > 系统相关 >Linux系统之jq工具的基本使用

Linux系统之jq工具的基本使用

时间:2024-03-24 10:04:46浏览次数:27  
标签:jQuery -- json jq noarch JSON Linux 工具

Linux系统之jq工具的基本使用

一、jq工具介绍

1. jq工具简介

jq是一款轻量级的命令行json处理工具,可以帮助用户轻松处理json格式的数据。它可以从标准输入读取json数据,也可以从文件中读取。同时,它支持各种查询和过滤操作,例如选择、过滤、转换、排序和格式化等。

2. jq工具的特点

jq是一种针对JSON格式数据处理的命令行工具,具有以下特点:

  • 快速和高效:jq使用C语言编写,处理JSON数据非常快速和高效。

  • 灵活和强大:jq具有丰富的功能和灵活的语法,能够处理复杂的JSON数据结构和进行高级的JSON数据操作。

  • 命令行工具:jq是一个命令行工具,可从终端中直接调用,方便快捷。

  • 跨平台:jq可在多种操作系统(包括Unix/Linux、Windows和macOS)上使用。

  • 开源:jq是一个开源工具,用户可自由修改和分发。

  • 支持管道:jq支持从一个命令输出管道到另一个命令作为输入,使得数据处理更加灵活和高效。

二、jq工具的安装

1. yum安装jq

  • 需要提前安装epel源
yum install -y epel-release
  • 搜索jq命令的软件包
[root@jeven ~]# yum search jq
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * epel: mirrors.tuna.tsinghua.edu.cn
====================================================== N/S matched: jq ======================================================
drupal7-jquery_update.noarch : Upgrades the version of jQuery in Drupal core to a newer version of jQuery
jq-devel.x86_64 : Development files for jq
js-jquery-mousewheel.noarch : A jQuery plugin that adds cross-browser mouse wheel support
js-jquery-ui.noarch : jQuery user interface
js-jquery-ui-touch-punch.noarch : Touch Event Support for jQuery UI
python-XStatic-JQuery-Migrate.noarch : JQuery-Migrate (XStatic packaging standard)
python-XStatic-JQuery-TableSorter.noarch : JQuery-TableSorter (XStatic packaging standard)
python-XStatic-JQuery-quicksearch.noarch : JQuery-quicksearch (XStatic packaging standard)
python-XStatic-jQuery.noarch : jQuery 1.10.2 (XStatic packaging standard)
python-XStatic-jquery-ui.noarch : jquery-ui (XStatic packaging standard)
python-tw2-jqplugins-flot.noarch : jQuery flot (plotting) for ToscaWidgets2
python-tw2-jqplugins-gritter.noarch : jQuery gritter (growl-like pop-ups) for ToscaWidgets2
python-tw2-jqplugins-jqplot.noarch : Toscawidgets2 wrapper for the jqPlot jQuery plugin
python-tw2-jqplugins-ui.noarch : jQuery UI for ToscaWidgets2
python-tw2-jquery.noarch : jQuery for ToscaWidgets2
jq.x86_64 : Command-line JSON processor
js-jquery.noarch : JavaScript DOM manipulation, event handling, and AJAX library
js-jquery1.noarch : JavaScript DOM manipulation, event handling, and AJAX library
nodejs-extend.noarch : Port of jQuery.extend for node.js and the browser
python-pyquery.noarch : A jQuery-like library for python
python2-XStatic-DataTables.noarch : DataTables jquery javascript framework (XStatic packaging standard)
xstatic-datatables-common.noarch : DataTables jquery javascript framework (XStatic packaging standard)

  Name and summary matches only, use "search all" for everything.

  • 安装jq工具
yum -y install jq.x86_64
  • 查看jq版本
[root@docker yum.repos.d]# jq -V
jq-1.6

2. 二进制安装jq

  • 下载jq工具的软件包
wget https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64  -O   /usr/local/bin/jq
  • 设置权限
chmod +x /usr/local/bin/jq

三、jq命令的使用帮助

1. 查询jq命令帮助信息

使用jq --help查询帮助信息

[root@jeven ~]# jq --help
jq - commandline JSON processor [version 1.6]

Usage:	jq [options] <jq filter> [file...]
	jq [options] --args <jq filter> [strings...]
	jq [options] --jsonargs <jq filter> [JSON_TEXTS...]

jq is a tool for processing JSON inputs, applying the given filter to
its JSON text inputs and producing the filter's results as JSON on
standard output.

The simplest filter is ., which copies jq's input to its output
unmodified (except for formatting, but note that IEEE754 is used
for number representation internally, with all that that implies).

For more advanced filters see the jq(1) manpage ("man jq")
and/or https://stedolan.github.io/jq

Example:

	$ echo '{"foo": 0}' | jq .
	{
		"foo": 0
	}

Some of the options include:
  -c               compact instead of pretty-printed output;
  -n               use `null` as the single input value;
  -e               set the exit status code based on the output;
  -s               read (slurp) all inputs into an array; apply filter to it;
  -r               output raw strings, not JSON texts;
  -R               read raw strings, not JSON texts;
  -C               colorize JSON;
  -M               monochrome (don't colorize JSON);
  -S               sort keys of objects on output;
  --tab            use tabs for indentation;
  --arg a v        set variable $a to value <v>;
  --argjson a v    set variable $a to JSON value <v>;
  --slurpfile a f  set variable $a to an array of JSON texts read from <f>;
  --rawfile a f    set variable $a to a string consisting of the contents of <f>;
  --args           remaining arguments are string arguments, not files;
  --jsonargs       remaining arguments are JSON arguments, not files;
  --               terminates argument processing;

Named arguments are also available as $ARGS.named[], while
positional arguments are available as $ARGS.positional[].

See the manpage for more options.

2. jq命令的选项解释

jq命令的选项解释

-c               紧凑而不是漂亮的输出;
-n               使用`null`作为单个输入值;
-e               根据输出设置退出状态代码;
-s               将所有输入读取(吸取)到数组中;应用过滤器;
-r               输出原始字符串,而不是JSON文本;
-R               读取原始字符串,而不是JSON文本;
-C               为JSON着色;
-M               单色(不要为JSON着色);
-S               在输出上排序对象的键;
--tab            使用制表符进行缩进;
--arg a v        将变量$a设置为value<v>;
--argjson a v    将变量$a设置为JSON value<v>;
--slurpfile a f  将变量$a设置为从<f>读取的JSON文本数组;
--rawfile a f    将变量$a设置为包含<f>内容的字符串;
--args           其余参数是字符串参数,而不是文件;
--jsonargs       其余的参数是JSON参数,而不是文件;
--               终止参数处理;

四、jq命令的基本使用

1. 显示json文件的所有的key

  • 查看当前测试name.json文件内容
[root@jeven ~]# cat name.json 
{
   "name": "John",
   "age": 30,
   "city": "New York",
   "hobbies": ["reading", "running", "traveling"],
   "education": {
      "degree": "Master's",
      "major": "Computer Science",
      "school": "University of California"
   }
}


显示json文件的所有的key

[root@jeven ~]# jq keys name.json 
[
  "age",
  "city",
  "education",
  "hobbies",
  "name"
]

2. 显示key对应的值

  • 显示某个key对应的值
[root@jeven ~]# jq .hobbies  name.json 
[
  "reading",
  "running",
  "traveling"
]

  • 显示所有key对应的值
[root@jeven ~]# jq .[] name.json 
"John"
"30"
"New York"
[
  "reading",
  "running",
  "traveling"
]
{
  "degree": "Master's",
  "major": "Computer Science",
  "school": "University of California"
}

3. 查询json文件

查询json文件内容

[root@jeven ~]# cat name.json  |jq 
{
  "name": "John",
  "age": 30,
  "city": "New York",
  "hobbies": [
    "reading",
    "running",
    "traveling"
  ],
  "education": {
    "degree": "Master's",
    "major": "Computer Science",
    "school": "University of California"
  }
}

4. 计算值的长度

计算name.json文件中值的长度

[root@jeven ~]# jq '.[] | length' name.json 
4
2
8
3
3

5. 输出美观的格式

[root@jeven ~]# echo '{ "jven": { "aa": { "bb": 123 } } }' | jq '.'
{
  "jven": {
    "aa": {
      "bb": 123
    }
  }
}

6. 过滤json文件中的键值

在json文件中所有值中进行过来吧内容。

[root@jeven ~]# jq .[] name.json  | grep school
  "school": "University of California"

标签:jQuery,--,json,jq,noarch,JSON,Linux,工具
From: https://blog.csdn.net/jks212454/article/details/131214471

相关文章

  • Linux环境下使用Eclipse Paho C 实现(MQTT Client)同步模式发布和订阅Message
    目录概述1同步模式和异步模式1.1同步模式1.2异步模式2下载和安装paho.mqtt.c3同步方式发布和订阅消息功能实现3.1MQTTClient参数配置3.2初始化MQTTClient3.3发布消息功能3.4订阅消息功能3.5解析订阅的信息4编译和测试4.1编译代码4.2运行5验证MQ......
  • Linux进程查看与杀死进程
    Linux进程查看与杀死进程摘要:在Linux操作系统中,我们经常需要查看当前正在运行的进程,有时也需要结束某个不响应或占用资源过多的进程。本文将详细介绍如何在Linux中使用命令行工具查看和杀死进程。一、进程查看ps命令:ps是"processstatus"的缩写,用于显示系统中的当前进程......
  • 工作中常用到的Linux命令
    系统,用户信息操作相关命令查看主机ip地址ifconfig获取用户信息id修改用户密码passwd查看链接用户who创建新用户账号useradd删除用户账号userdel修改用户账号的属性usermod查看系统发行版本cat/proc/version说明适用于所有版本。示例[root@vps ~]# cat /pro......
  • 【Linux】详谈命令行参数&&环境变量
    目录一、浅谈命令行参数二、环境变量2.1环境变量的内涵以及理解2.2PATH环境变量:2.3输入程序名就能运行我们的程序2.4系统中的环境变量2.5导出环境变量 三、main函数的第三个参数3.1获得环境变量的三种方法 四、本地变量一、浅谈命令行参数        我......
  • 定制和配置你的 shell 环境的一个强大工具——.bashrc
    本文结构:a、简单介绍b、操作示例c、注意事项a、当你在一个新的终端会话开始时,Bashshell会读取并执行.bashrc文件中的命令。这使得.bashrc成为定制和配置你的shell环境的一个强大工具。b、以下是一些.bashrc文件中常见的元素和它们的作用:1.别名(Aliases)  .bas......
  • 在Linux中,如何判断一个进程是否存活,如果不存活,如何告实现警?
    在Linux中,判断一个进程是否存活并实现告警,可以通过一系列步骤来完成。以下是详细的步骤说明:1.判断进程是否存活使用ps命令:ps命令是Linux中用来查看当前进程状态的常用命令。你可以结合grep来过滤出特定进程的信息。例如,要查看名为"example_process"的进程是否存在,可以运行以下......
  • 在Linux中,有一个文件,10行9列,如何打印最后一列,如何打印最前一列?
    在Linux中,打印文本文件的某一列可以使用awk或cut命令。这里分别演示如何打印一个10行9列文件的最后一列和最前一列:1.打印最后一列:使用awk命令:awk'{print$NF}'filename.txt这里的NF是内部变量,表示当前行的字段数量,所以$NF就是最后一个字段,也就是最后一列。使用cut命令:......
  • 在Linux中,如何查看内核版本?内核版本信息包含什么?
    在Linux中查看内核版本有多种方法,下面列举了几种常用且详细的命令:方法一:uname命令仅查看内核版本:uname-r这个命令会打印出当前系统运行的内核版本号,例如:4.15.0-72-generic。查看详细系统信息:uname-a这个命令会输出所有与内核相关的详细信息,包括内核名称、主机名、......
  • 01.绝对路径和相对路径(Linux基本概念)
    基础认知:        电脑的目录结构是一颗多叉树。不管是Linux还是windows,目录结构都是一样的。所以我们在查找某个目录或者文件的时候,本质就是在多叉树结点的查找。多叉树示例图如下:                ​​​​​​​        ​​​​​​​  ......
  • 在Linux中,内存怎么看?磁盘状态怎么看?
    在Linux系统中,查看内存和磁盘状态主要依靠一系列命令行工具来进行。以下是分别查看内存和磁盘状态的详细说明:1.查看内存状态:free命令free-h#或者free-m用以显示内存使用状况,单位可以是人类友好的KB,MB,GB等这个命令会显示系统的总内存、已使用内存、空闲内存、缓......