今天在看mysql 8.0特性的  set persist 时候,看到一个博客对mysqld-auto.cnf 的json格式化,用的工具是jq,当时以为是自己写的小工具,就去网上查了一下,还真发现有人写了这么一个小工具,还是挺好用的,就把文章转载过来,以后还能用。

[root@anedbtest01 ~]# cat  /u01/data/ane20000/mysqld-auto.cnf|/tmp/jq
{
  "Version": 1,
  "mysql_server": {
    "max_connections": {
      "Value": "500",
      "Metadata": {
        "Timestamp": 1558056501802792,
        "User": "root",
        "Host": "localhost"
      }
    }
  }
}

作者:娄超

在web 2.0时代json这种直观、灵活、高效数据格式基本已经成为一种标准格式,从各种web api,到配置文件,甚至现在连mysql都开始支持json作为数据类型。

但是在平时开发运维中往往因为格式问题或者输出数据太多,体验不是很爽,之前我就经常需要借助一些json自动语法检查、格式化、分层折叠的工具(如http://www.bejson.com/ ), 往往还是需要来回拷贝,还是觉得很麻烦。

所以,一直希望有个linux命令行的简单命令(python的json.tool模块只能格式化显示),偶然发现了这个jq的小工具,感觉很强大,就分享一下。

不说废话了,直接例子说明吧

使用说明

1、格式化json数据

echo '{"kind": "Service", "apiVersion": "v1", "status": {"loadBalancer": true}}'|jq .{  "kind": "Service",  "apiVersion": "v1",  "status": {    "loadBalancer": true}}

只要3个字母搞定,其中jq是工具命令,后面参数是过滤选择参数,"." 表示直接输出完整的json数据。

usage: jq [options]  [file...]

2. 过滤出需要的字段信息

cat service.json {    "kind": "Service",    "apiVersion": "v1",    "metadata": {        "name": "kubernetes",        "namespace": "default",     },    "spec": {        "ports": [             {                "protocol": "TCP",                "port": 443,                "targetPort": 443,                "nodePort": 0             }         ], .....很多数据 } cat service.json|jq .metadata.name"kubernetes"

3、过滤出某个数组对象

cat service.json|jq .spec.ports[0]
{  "protocol": "TCP",  "port": 443,  "targetPort": 443,  "nodePort": 0}

4、使用管道过滤并调整输出

cat service.json|jq  ".spec.ports[0]| {srcPort: .port, targetPort: .targetPort}"    {  "srcPort": 443,  "targetPort": 443}

如果数据的下标为不填,将输出所有数组的过滤值,如 cat service.json|jq ".spec.ports[]| {srcPort: .port, targetPort: .targetPort}"

5、 自定义输出数组

cat t.json
{  "parents": [{      "sha": "54b9c9bdb225af5d886466d72f47eafc51acb4f7",      "url": "https://api.github.com/repos/stedolan/jq/commits/54b9c9bdb225af5d886466d72f47eafc51acb4f7",      "html_url": "https://github.com/stedolan/jq/commit/54b9c9bdb225af5d886466d72f47eafc51acb4f7"},{      "sha": "8b1b503609c161fea4b003a7179b3fbb2dd4345a",      "url": "https://api.github.com/repos/stedolan/jq/commits/8b1b503609c161fea4b003a7179b3fbb2dd4345a",      "html_url": "https://github.com/stedolan/jq/commit/8b1b503609c161fea4b003a7179b3fbb2dd4345a"}]
}
cat t.json|jq ' { html_urls: [.parents[].html_url]}'{  "html_urls": [    "https://github.com/stedolan/jq/commit/54b9c9bdb225af5d886466d72f47eafc51acb4f7",    "https://github.com/stedolan/jq/commit/8b1b503609c161fea4b003a7179b3fbb2dd4345a"]
}

6、支持条件查询

举个简单例子,只输出tcp协议端口信息

cat service.json|jq .spec.ports[0]
{  "protocol": "TCP",  "port": 443,  "targetPort": 443,  "nodePort": 0}cat service.json |jq 'if .spec.ports[0].protocol = "tcp" then .spec.ports[0] else "not tcp" end'

注意jq 的语法有点奇怪, 必须 if else 同时存在,数字相等是用 "==",字符串是"="

总之,jq 功能是很强大的,它是一个c语言写的小工具,包括很多正则匹配,更多高级使用方法,见 https://stedolan.github.io/jq/manual/

安装说明

Debian and Ubuntu 下

作者:yijian2595
链接:https://www.jianshu.com/p/f0713384ff02

jq json格式化工具相关推荐

  1. CentOS7安装json格式化工具jq

    更多内容,请查看博客原文:CentOS7安装json格式化工具jq https://finolo.gy/2019/12/CentOS7安装json格式化工具jq cd /etc/yum.repos.d ...

  2. 在线JSON格式化工具

    在线JSON格式化工具 在线JSON格式化工具 https://tooltt.com/json/

  3. Java Json格式化工具

    Java Json格式化工具 Java 实现Json格式化工具 代码地址: https://github.com/AndroidJavaToolsDemo/JavaTool_JsonValidate ...

  4. 那些年我用过的JSON格式化工具

    JSON格式化是开发中不可或缺的一个工具,但是要做这个事其实有很多方式,有的同学习惯用本地的工具,比如VsCode或者Utool之类的,有的同学习惯用在线的工具,当然各有各的好处,但本质上是习惯的问题 ...

  5. JSON格式化工具下载

    JSON格式化工具分享,web开发中要看JSON的时候经常不方便,特意找了一些格式化工具,放到了我的网盘上 一.Windows下格式化json的工具: 1.JsonView 下载地址:https:// ...

  6. 安卓JSON格式化工具

    前言 在日常工作中,后端返回的报文有时候格式比较混乱,不方便我们解析.然后我网上搜了一下,好像离线版的安卓平台JSON格式化工具并不多.不过没关系,没有的话那就去创造一个. 实现方法 实现方法其实很简 ...

  7. Json 格式化工具类 支持Jackson、FastJson、Gson

    Json 格式化工具类 1.使用Jackson的DefaultPrettyPrinter来格式化json /*** 将对象按以格式化json的方式写出* 使用的json为Jackson** @para ...

  8. 好用的JSON格式化工具

    没有广告,好用,可以折叠显示的JSON格式化工具 http://jsonviewer.stack.hu/

  9. 超级好用的json格式化工具

    理想的json格式化工具应该具备什么? 你心中的json格式化工具是什么? Json.cn? No No No, 这个已经老掉牙了 理想的json格式化工具应该支持搜索.定位.非法json容错,若实在 ...

  10. json 格式化工具_如何在命令行中优雅地处理JSON

    当年刚出道的时候,整天使用 grep/cut/awk 处理各种纯文本日志.那时候的日志都是一行一条,内容使用特定分割符.使用各种 unix 命令配合管道真可谓得心应手. 然而,到了 9102 年,好多 ...

最新文章

  1. php操作MySQL
  2. python的自带数据集_解决Keras自带数据集与预训练model下载太慢问题
  3. 在Visual Studio 2010/2012中 找不到创建WebService的项目模板
  4. 布隆过滤器(Bloom Filter)原理及优缺点剖析
  5. 数字和字符串的相互转化
  6. 处理时间_3_计算两个时间列工作日差值
  7. 【STM32】输入捕获程序
  8. 重叠I/O之事件对象通知
  9. ExtJS4.2学习(21)动态菜单与表格数据展示操作总结篇2
  10. Linux用户相关的操作命令
  11. 【多目标优化求解】基于matlab粒子群算法求解配电网抢修优化问题【含Matlab源码 777期】
  12. 哲理故事300篇 中
  13. Windows7 关闭UAC_频繁提示的权限放行窗口
  14. 索爱最强大java手机_这几款索爱的手机哪款好啊?
  15. 2.灰尘对计算机的影响,灰尘对电脑有影响不?
  16. FPGA开发——SRIO
  17. 2401C可解RFX2401C缺货的燃眉之急,也可直接诶替代CC2592/CC2591
  18. 计算机网络(十九)其他IP相关技术
  19. ffmpeg函数分析:av_read_frame()
  20. 一个int类型到底占多少个字节

热门文章

  1. 指标公式c语言源码下载,通达信超级厉害指标公式源码附图-通达信公式-公式指标网...
  2. gsonformat java代码_插件GsonFormat快速實現JavaBean
  3. 不确定度在线计算_计量测量的不确定度详解
  4. 飞秋命令行发送消息和文件
  5. 运维系统 联想服务器,联想运维方案.pdf
  6. win10下如何解决VC++MSDEV.EXE的0xc0000142错误
  7. C语言关键字浅析-int
  8. 信号与系统----导论1杂谈为什么要学信号与系统
  9. 成语接龙、歇后语 js JavaScript html web nodejs成语接龙离线js库
  10. 深信服scsa知识点一