zoukankan      html  css  js  c++  java
  • 7.linux的json神器之jq

    参考:https://blog.csdn.net/qq_21816375/article/details/76064612

    mac
    安装:

    brew install jq

    centos
    安装:

    yum install jq

    ubuntu:
    安装:

    apt-get install jq
    jq命令允许直接在命令行下对JSON进行操作
    包括分片、过滤、转换等 
    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
    基于javascript(Standard ECMA-262 3rd Edition - December 1999)的一个子集 
    JSON 数据的书写格式是: 名称/对象。 
    JSON的结构基于两点
    
    “名称/值”的集合 ,在不同的语言中,它可以被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),键列表(keyed list)等 .
    值的有序列表 多数语言中被理解为数组(array)
    
    JSON的基础结构说明
    
    对象是属性、值的集合。一个对象开始与”{” ,结束于”}”。每一个属性名和值间用”:”分隔。每个属性间用”,”分隔。
    值可以是字符串,数字,逻辑值,数组,对象,null。 
    数字:整数或浮点数 
    字符串:在双引号中 
    逻辑符:true和false 
    数组:在方括号中 
    对象:在花括号中 
    null: 代表空

    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文件。

    [{"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"}]

    示例:

    $ jq . apinfo.json   
    [
      {
        "firmwareVersion": "1.0.6.29",
        "hardVersion": "1.20",
        "Operators": "CTCC",
        "iccid": "DATA DATA",
        "snOf3g": "A000004E123ABD2",
        "modelOf3g": "MC271X",
        "Company_3g": "ZTEMT INCORPORATED",
        "MEID_3g": "A000004E123ABD2",
        "memorySN": "000000",
        "memoryModel": "abcdefg",
        "cpuSN": "000000",
        "cpuModel": "MIPS 74Kc V4.12",
        "mac": "00:1F:64:CE:F3:8E",
        "hostsn": "01010730b12014A00477",
        "hostModel": "CS-VIC-1999-C",
        "stCompany": "Beijing Autelan Technology",
        "boardSN": "01010730b12014A00477",
        "networkCardMac": "00:1F:64:CE:F3:8F",
        "lowFreModel": "AR9344",
        "lowFreSN": "000000",
        "hignFreModel": "AR9582",
        "hignFreSN": "000000",
        "gpsModel": "abcdefg",
        "gpsSN": "000000"
      }
    ]
    
    jq '.[]' apinfo.json 
    {
      "firmwareVersion": "1.0.6.29",
      "hardVersion": "1.20",
      "Operators": "CTCC",
      "iccid": "DATA DATA",
      "snOf3g": "A000004E123ABD2",
      "modelOf3g": "MC271X",
      "Company_3g": "ZTEMT INCORPORATED",
      "MEID_3g": "A000004E123ABD2",
      "memorySN": "000000",
      "memoryModel": "abcdefg",
      "cpuSN": "000000",
      "cpuModel": "MIPS 74Kc V4.12",
      "mac": "00:1F:64:CE:F3:8E",
      "hostsn": "01010730b12014A00477",
      "hostModel": "CS-VIC-1999-C",
      "stCompany": "Beijing Autelan Technology",
      "boardSN": "01010730b12014A00477",
      "networkCardMac": "00:1F:64:CE:F3:8F",
      "lowFreModel": "AR9344",
      "lowFreSN": "000000",
      "hignFreModel": "AR9582",
      "hignFreSN": "000000",
      "gpsModel": "abcdefg",
      "gpsSN": "000000"
    }
    
    $ jq -r .[].mac apinfo.json 
    00:1F:64:CE:F3:8E
    
    $ jq -r '.[] | .mac' apinfo.json 
    00:1F:64:CE:F3:8E
    
    $ jq -r '.[] |.mac, .gpsSN' apinfo.json 
    00:1F:64:CE:F3:8E
    000000
    
    jq -r '.[].mac, .[].gpsSN' apinfo.json 
    00:1F:64:CE:F3:8E
    000000

    参考
    1. https://stedolan.github.io/jq/download/
    2.http://blog.csdn.net/u011641885/article/details/45559031

  • 相关阅读:
    MYSQL查询优化:profile功能
    MYSQL查询优化:调度和锁定
    SSL/TLS 协议详解
    flash传值给javascript,并在html页面输出
    【图片预加载】
    【minheight】最小高度 IE6、7、FF
    【图片等比缩放】CSS解决
    标签的空链接 href="#" 替换方案
    【实现三角】css的border属性解决方案
    【PNG在IE6下透明】——3种方案
  • 原文地址:https://www.cnblogs.com/robinunix/p/13265780.html
Copyright © 2011-2022 走看看