• jq命令常用用法


    jq命令用于数据格式化,json和数组数据提取,重组数组对象,切片,过滤等操作
    参考官网:https://stedolan.github.io/jq/manual/
    jq在线解析界面:https://jqplay.org/
    参考资料:https://blog.csdn.net/Rambo_Yang/article/details/107942452

    安装

    mac 安装:brew install jq
    centos 安装:yum install jq
    ubuntu: 安装:apt-get install jq

    格式化

    jq [option] filter [files]
    jq+可选参数+过滤条件+文件位置
    过滤参数:
    . :格式化json内容
    .foo :输出指定属性,使用.嵌套访问字段
    .[下标] :输出指定数组元素
    .[] :输出指定数组中全部元素
    , :多个属性过滤时,使用逗号分隔
    | :管道过滤,将指定的数组元素中的某个属性作为过滤条件
    注:jq过滤条件都是以.开头
    实例:
    lq.txt文件如下:
    {
    "name":"lq",
    "age":24,
    "data":{"v1":12,"v2":24,"v3":[1,2,3]}

    }

    格式化

    cat lq.txt | jq '.'

    从json内容提取

    使用.嵌套访问
    cat lq.txt | jq .data.v1 --获取指定字段的值
    cat lq.txt | jq ".data.v1,.data.v2" --使用逗号分隔,取多个字段的值;返回值以换行分隔
    cat lq.txt | jq ".data.v3[]" --提取v3数组的全部元素
    cat lq.txt | jq ".data.v3[0,2]" --提取v3数组的多个元素

    从数组中提取单个数据

    echo '[{"a":1,"b":2},{"c":3,"d":4}]' | jq .[0]

    从数组中提取所有数据

    echo '[{"a":1,"b":2},{"c":3,"d":4}]' | jq .[]

    过滤多个值

    echo '[{"a":1,"b":2},{"c":3,"d":4}]' | jq .[0,1]

    重组

    数据重组成数组

    echo '{"a":1,"b":2,"c":3,"d":4}' | jq '[.a,.b]' --返回[1,2]
    echo '{"a":1,"b":2,"c":3,"d":4}' | jq '.[]' --返回[1,2,3,4]

    数据重组成对象

    echo '{"a":1,"b":2,"c":3,"d":4}' | jq '{"tmp":.b}' --输出{"tmp":2}
    echo '{"a":1,"b":2,"c":3,"d":4}' | jq '{a,b}' --输出{"a":1,"b":2}
    cat lq.txt | jq '.data | {v1,v2}' --输出{v1:12,v2:24};取嵌套的数组组成对象,不能直接使用,需要遍历进去

    管道使用

    echo [{"a":1,"b":2},{"a":3,"d":4}] | jq '.[] | .a'

    内置函数使用

    keys获取json中的所有key

    echo '{"a":1,"b":2,"c":3,"d":4}' | jq 'keys' --返回["a","b","c","d"]

    返回元素的长度length

    echo '{"a":1,"b":2,"c":3,"d":4}' | jq 'length' --返回元素个数:4
    echo '[{"a":1,"c":2}, "string", {"a":2}, null]' | jq '.[] | length' --返回2 6 1 0

    数据增删改

    删除元素

    cat lq.txt | jq 'del(.data.v1)' --删除json中的元素v1

    更改元素值

    cat lq.txt | jq '.age={dd:5}' --更改age元素的值为{"dd":5}

    增加值

    cat lq.txt | jq '. + {d:4}' --在全部元素的基础上增加元素d
    cat lq.txt | jq '.data + {d:4}' --在data元素值基础上增加元素d

    知道、想到、做到、得到
  • 相关阅读:
    降维
    latex 中文
    Java基础——通信
    Java基础——文件读取
    Java基础——哈弗曼树的Java实现(构建、遍历输出、哈弗曼编码)
    Java基础——表达式二叉树的Java实现构建(构建+前序、中序、后序遍历)
    MYSQL和ORACLE的一些区别
    快速排序
    冒泡排序
    希尔排序
  • 原文地址:https://www.cnblogs.com/Durant0420/p/14002577.html
Copyright © 2020-2023  润新知