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

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

  • 一、jq工具介绍
    • 1. jq工具简介
    • 2. jq工具的特点
  • 二、jq工具的安装
    • 1. yum安装jq
    • 2. 二进制安装jq
  • 三、jq命令的使用帮助
    • 1. 查询jq命令帮助信息
    • 2. jq命令的选项解释
  • 四、jq命令的基本使用
    • 1. 显示json文件的所有的key
    • 2. 显示key对应的值
    • 3. 查询json文件
    • 4. 计算值的长度
    • 5. 输出美观的格式
    • 6. 过滤json文件中的键值

一、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/jqExample:$ 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"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/761310.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

掌握Python数据分析:从入门到精通【文末送书-43】

文章目录 掌握Python数据分析&#xff1a;从入门到精通入门篇进阶篇精通篇 Python数据分析从入门到精通&#xff08;第2版&#xff09;&#xff08;软件开发视频大讲堂&#xff09;【文末送书-43】 掌握Python数据分析&#xff1a;从入门到精通 Python已成为数据科学领域最受欢…

网工内推 | 云计算工程师,HCIE认证优先,最高18k*14薪

01 杭州中港科技有限公司 招聘岗位&#xff1a;云计算工程师 职责描述&#xff1a; 1、承担云计算相关工程交付、业务上云及售前测试&#xff0c;从事虚拟化、桌面云、存储、服务器、数据中心、大数据、相关产品的工程项目交付或协助项目交付。 2、承担云计算维护工程师职责&…

C# 实时监听文件夹以及文件夹内部的变化

主要是使用系统自带的System.IO.FileSystemWatcher这个类&#xff0c;废话不多说&#xff0c;直接上代码&#xff1a; /// <summary>/// 文件监听/// </summary>public class FileFolderMonitor{private FileSystemWatcher fileSystemWatcher;/// <summary>…

基于springboot创建mybatis

第一步&#xff1a;创建项目 第二步&#xff1a;添加依赖 第三步&#xff1a;连接MySQL 第四步&#xff1a;添加MySQL配置 #驱动类名称 spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver #数据库连接的url spring.datasource.urljdbc:mysql://localhost:3306/myb…

泰克Tektronix MDO4034C混合域示波器

181/2461/8938产品概述&#xff1a; MDO4034C混合域示波器&#xff1a;350 MHz模拟带宽&#xff0c;2.5 GS/s采样率&#xff0c;20 M 点记录长度&#xff0c;4模拟通道&#xff1b;MDO4000C混合域示波器是一款功能强大的高性能六合一示波器。MDO4000C混合域示波器是一款功能强…

【Python-Pandas】to_csv用法示例

to_csv用法示例 X_train.to_csv("F:\\PaperCode\\Mypaper_python_code\\data\\dataset_split\\X_train.tsv", indexFalse)index &#xff1a;表示是否保存索引&#xff0c;如果是True&#xff0c;则保存索引。默认是True

恭贺熊盛熊入围2024中国别墅门十大品牌

近日&#xff0c;2024年别墅门十大品牌终于在万众期待中正式落下帷幕。在这里恭喜熊盛熊顺利入围&#xff0c;成功跻身2024年中国别墅门十大品牌前十强&#xff01; 熊盛熊隶属于武义熊盛熊门业有限公司。熊盛熊门业是一家集设计、开发、生产、销售及服务于一体的高科技生产型企…

蓝桥刷题--四元组问题和肖恩的投球游戏加强版

1.四元组问题 我的这个代码有点问题&#xff0c;我也找不出来&#xff0c;哪位大佬指正一下 // 四元组问题 //思路 // 是否存在 a < b < c < d, 使得nums[d] < nums[c] < nums[a] < nums[b] //分别维护二元组 (a, b) 和 (c, d), 对合法 b 维护前缀 max 的 n…

冲刺跑转长跑过程中,新茶饮品牌如何觅增量?

如今&#xff0c;新茶饮行业的发展日趋成熟&#xff0c;并通过资本动作、市场扩张等释放出相关信号。 比如&#xff0c;在资本动作上&#xff0c;IPO已成为新茶饮品牌发展的重要议程。可以看到&#xff0c;截至2023年2月&#xff0c;正在推进港交所IPO的新茶饮企业就有茶百道、…

【力扣】力扣合集

统计 CSDN 力扣 持续更新 1. 两数之和2. 两数相加9. 回文数13. 罗马数字转整数14. 最长公共前缀21. 合并两个有序链表26. 删除有序数组中的重复项27. 移除元素28. 找出字符串中第一个匹配项的下标35. 搜索插入位置58. 最后一个单词的长度66. 加一67. 二进制求和69. x 的平方根…

公司系统中了.rmallox勒索病毒如何恢复数据?

早晨上班时刻&#xff1a; 当阳光逐渐洒满大地&#xff0c;城市的喧嚣开始涌动&#xff0c;某公司的员工们纷纷踏入办公大楼&#xff0c;准备开始新的一天的工作。他们像往常一样打开电脑&#xff0c;准备接收邮件、查看日程、浏览项目进展。 病毒悄然发作&#xff1a; 就在员…

数学建模常用的代码

Dijkstra算法找最短路径代码 算法的核心就是从原点出发&#xff08;原点可以是自己定义的任意一个点&#xff09;&#xff0c;以原点为圆心&#xff0c;半径从小到大&#xff0c;判断原点到半径上面的点的最短距离&#xff0c;这个距离可能是圆心r0->r1&#xff08;半径较小…

大屏动效合集更更更之实现百分比环形

实现效果 参考链接&#xff1a; https://pslkzs.com/demo/pie/demo1.php 写在最后&#x1f352; 源码&#xff0c;关注&#x1f365;苏苏的bug&#xff0c;&#x1f361;苏苏的github&#xff0c;&#x1f36a;苏苏的码云

Linux系统编程(笔记)

1、认识计算机系统&#xff08;上&#xff09; 1.1、计算机系统由软硬件构成 1.2、总线 1.3、I/O设备 1.4、内存 1.5、处理器 1.6、计算机硬件组成 2、认识计算机系统&#xff08;下&#xff09; 2.1、什么是操作系统 2.2、Linux内核模块 2.3、操作系统管理硬件&#xff08;职…

python之pathlib库使用介绍

pathlib 是 Python 标准库中用于处理文件路径的模块。它提供了一种面向对象的方式来操作文件和目录路径&#xff0c;简化了路径操作的编码和跨平台的兼容性。下面是 pathlib 库的基本介绍和使用方法&#xff1a; 1.导入 pathlib 模块 from pathlib import Path 2.创建路径对…

进程的终止

进程的退出&#xff08;main函数的退出&#xff09; main函数的返回值叫做进程的退出码&#xff0c;该退出码表示进程执行的情况。例如&#xff1a;一个函数返回一个值时&#xff0c;我们要知道函数的执行情况&#xff0c;可以去看函数的返回值。 例子&#xff1a; 1 #include…

【VTKExamples::Points】第五期 ExtractPointsDemo

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例ExtractPointsDemo,并解析接口vtkExtractPoints,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U…

进程优先级

文章目录 一、进程优先级二、查看进程优先级以及修改优先级 一、进程优先级 cpu资源少量&#xff0c;只有一个然而在操作系统中存在很多进程&#xff0c;这些进程访问cpu资源时他们相互之间是存在竞争关系。cpu为了保他们之间的公平&#xff0c;也就存在了优先级&#xff01;那…

NX二次开发——获取当前dll的全路径,上一级路径和名称

在nx二次开发中经常会用到dll的全路径&#xff0c;上一级路径和名称&#xff0c;这里我对其进行封装&#xff0c;方便以后调用。 关键代码&#xff1a; //头文件 #include <Windows.h> #include <atlbase.h>//获取当前dll所在的文件夹(mode:0-全路径名&#xff0…

【DP】第十四届蓝桥杯省赛C++ B组《接龙数列》(C++)

【题目描述】 对于一个长度为 K 的整数数列&#xff1a;A1,A2,...,AK&#xff0c;我们称之为接龙数列当且仅当 的首位数字恰好等于 的末位数字 (2≤i≤K)。 例如 12,23,35,56,61,11 是接龙数列&#xff1b;12,23,34,56 不是接龙数列&#xff0c;因为 56 的首位数字不等于 3…