首页 > 系统相关 >Linux:jq命令

Linux:jq命令

时间:2022-09-21 18:13:53浏览次数:96  
标签:bar -- jq echo 命令 JSON Linux foo

介绍

官网:jq (stedolan.github.io)

image-20220921173847800

jq 是 stedolan 开发的一个轻量级的和灵活的命令行JSON处理器

jq 用于处理JSON输入,将给定过滤器应用于其JSON文本输入并在标准输出上将过滤器的结果生成为JSON。

最简单的过滤器是.,它将jq的输入未经修改地复制到其输出中(格式设置除外)。

请注意,jq 当前仅支持64位双精度浮点数(IEEE754)。

安装

# Debian系,如 Ubuntu
sudo apt-get install jq

# RedHat系, 如 CentOS
yum install -y jq

#ARCH
sudo pacman -S jq

语法

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

选项:

-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参数,而不是文件;
--               终止参数处理;

使用举例

以漂亮的方式输出

echo '{ "foo": { "bar": { "baz": 123 } } }' | jq '.'

image-20220921174452304

获取一个键的值:

echo '{"foo": 42, "bar": {"age":123}}' | jq '.foo'
echo '{"foo": 42, "bar": {"age":123}}' | jq '.bar.age'

image-20220921174611064

数组运算:取第一个

echo '{"foo": 42, "bar": "less interesting data"}' | jq '.foo'

image-20220921174823007

构造一个数组/对象:

echo '{"user":"stedolan","titles":["JQ Primer", "More JQ"]}' | jq '{user, title: .titles[]}'

image-20220921174951465

计算一个值的长度:

echo '[[1,2], "string", {"a":22}, null]' | jq '.[] | length'

image-20220921175108770

取出json中的键:

echo '{"abc": 1, "abcd": 2, "Foo": 3}' | jq 'keys'

image-20220921175212744

使用多个过滤器:

echo '{ "foo": 42, "bar": "something else", "baz": true}' | jq '.foo, .bar'

image-20220921175251357

通过管道将一个过滤器的输出当做下一个过滤器的输入:

echo '[{"name":"JSON", "good":true}, {"name":"XML", "good":false}]' | jq '.[] | .name'

image-20220921175354613

map(foo): 每个输入调用过滤器

echo '[1,2,3]' | jq 'map(.+1)'

image-20220921175435084

select(foo): 如果foo返回true,则输入保持不变

echo '[1,5,3,0,7]' | jq 'map(select(. >= 2))'

image-20220921175459556

if-then-else-end: 条件判断:

echo '2' | jq 'if . == 0 then "zero" elif . == 1 then "one" else "many" end'

image-20220921175547684

\(foo): 在字符串中插入值并进行运算:

echo '42' | jq '"The input was \(.), which is one less than \(.+1)"'

image-20220921175614467

详细例子:可执行man jq 查看官方案例:

image-20220921180021813

标签:bar,--,jq,echo,命令,JSON,Linux,foo
From: https://www.cnblogs.com/wwjj4811/p/16716601.html

相关文章

  • less命令
    背景:为了查看日志方便记录less命令的使用Linuxless命令详解(9个实用案例演示)里面有案例的详细演示 命令记录命令解释1.命令格式:less [参数]  文件 2.命令功能......
  • Linux目录和文件管理
     目录:1、linux目录层次2、查看文件内容cat(tac)3、more和less4、head和tail5、统计文件内容wc6、检索和过滤文件内容grep命令7、压缩命令gzip、bzip2命令linux目录......
  • linux调节系统音量
    1、第一查看声卡信息,获取声卡号cat/proc/asound/cards2、调节音量:(1)设置绝对音量,0%-100%,1表示声卡号pactlset-sink-volume190%(2)设置相对音量,增大10%pact......
  • 《安富莱嵌入式周报》第283期:全开源逆向“爆破”硬件工具,Linux内核6.1将正式引入RUST
    往期周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104本周更新视频:BSP视频教程第23期:通过Modbus解析器,轻松掌握Modbus主......
  • centos7 安装jq并获取meanResTime和throughput
    用jmeter性能测试之后会产生很多jtl,statistic文件,为了方便做excel表,需要自动读出吞吐率和平均响应时间。1.添加epel源yuminstallwgetwgethttp://dl.fedoraproject.......
  • SQLServer通过dos命令修改登录账户默认数据库
    当数据库安装好以后,禁用了windows默认验证,sa超级管理员账号,创建了一个特定账号dbsa,同时指定了dbsa默认数据库testdb误删了testdb以后,dbsa就无法再登录进去,同时也不能使用w......
  • Linux中的一些命令详解
    一、命令行格式1.1、何为命令? 在Linux操作系统中,凡是在字符操作界面中输入能够完成特定操作和任务的字符串都可以称为命令命令通常只代表实现某一类功能的程序的名称......
  • Linux(Debian) 配置netcore环境
    一、准备工作    ①、开启粘贴板#进入defaults.vim【未安装vim,按需安装】linaro@linaro-alip:~$sudovi/usr/share/vim/vim81/defaults.vim#将setmouse=......
  • linux 系统中使用命令测试端口通没通
    如果是TCP协议的端口:telnet192.168.32.1696935  如果是UDP协议的端口:nc-uvz10.200.132.19588  如果出现上面这种情况,说明端口是通的。......
  • Linux系统Oracle常见操作
    一、登录1.1   登录默认数据库 首先切换到oracle用户,用数据库默认管理员登录。[root@tsm-zh01~]#su–oracle[oracle@redhat~]$lsnrctlstart     ......