Linux 命令之 jq

一、命令解析

  jq 命令允许直接在命令行下对 JSON 进行操作,包括分片、过滤、转换等。有点类似于 Lambda 表达式的 Stream 流的操作。

二、命令安装

基于 CentOS7 的安装方式

  1. 通过 yum 安装

    # 安装EPEL源
    yum install epel-release
    
    # 查看下jq包是否存在
    yum list jq
    
    # 安装jq
    yum install jq
    
  2. 通过官网安装包安装

    # 解压 tar.gz 包进入目录 
    
    # 编译安装
    ./configure && make && make install
    
三、命令语法
  • 语法格式

    # jq + 可选参数 + 过滤条件 + 文件位置
    jq [options] filter [files]
    
  • 操作参数

    **options:**
    
    --version:输出jq的版本信息并退出
    --slurp/-s:读入整个输入流到一个数组。
    --raw-input/-R:不作为JSON解析,将每一行的文本作为字符串输出到屏幕。
    --null-input/ -n:不读取任何输入,过滤器运行使用null作为输入。一般用作从头构建JSON数据。
    --compact-output /-c:使输出紧凑,而不是把每一个JSON对象输出在一行。
    --colour-output / -C:打开颜色显示
    --monochrome-output / -M:关闭颜色显示
    --ascii-output /-a:指定输出格式为ASCII
    -raw-output /-r :如果过滤的结果是一个字符串,那么直接写到标准输出(去掉字符串的引号)
    
  • 过滤参数

    **filter:**
    .   : 默认输出
    .foo: 输出指定属性,foo代表属性。
    .[foo] :输出指定数组元素。foo代表数组下标。
    .[]:输出指定数组中全部元素
    , :指定多个属性作为过滤条件时,用逗号分隔
    | : 将指定的数组元素中的某个属性作为过滤条件
    
    **files:**
        JOSN格式文件。
    
四、命令使用
  1. 测试 JSON 格式数据

    [{"hostCompany":"Beijing Autelan Technology","hostModel":"CS-VIC-2000-C","hostsn":"01010730b12014A00477","mac":"00:1F:64:CE:F3:8E","cpuModel":"MIPS 74Kc V4.12","cpuSN":"000000","memoryModel":"abcdefg","memorySN":"000000","boardSN":"01010730b12014A00477","networkCardMac":"00:1F:64:CE:F3:8F","lowFreModel":"AR9344","lowFreSN":"000000","hignFreModel":"AR9582","hignFreSN":"000000","gpsModel":"abcdefg","gpsSN":"000000","MEID_3g":"A000004E123ABD2","Company_3g":"ZTEMT INCORPORATED","modelOf3g":"MC271X","snOf3g":"A000004E123ABD2","iccid":"89860314400200885980","Operators":"CTCC","hardVersion":"1.20","firmwareVersion":"1.0.6.29"}]
    
  2. 格式化 JSON 内容

    .
    

    在这里插入图片描述

  3. 通过 . + key 获取对应的值,如果 JSON 串有层级,可以不断深入

    .[].hostCompany
    

    在这里插入图片描述

  4. 多个输出对象一起过滤

    .[].hostCompany, .[].hostModel
    

    在这里插入图片描述

  5. 多个连接管道

    .[] | .hostModel , .hostCompany 
    

    在这里插入图片描述

  6. jq 1.6 在线解析界面

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值