linux shell jq命令 合并json文件

目录

centos安装 jq命令处理json数据

jq合并多个json文件

jq合并两个json文本内容

jq去除解析内容的双引号


centos安装 jq命令处理json数据

#安装EPEL源,企业版 Linux 附加软件包(以下简称 EPEL)是一个 Fedora 特别兴趣小组,用以创建、维护以及管理针对企业版 Linux 的一个高质量附加软件包集
sudo yum install -y epel-release

#查看下jq包是否存在
yum list jq
#安装jq
yum install jq

jq合并多个json文件

file1

{
    "value1": 200,"timestamp": 1382461861,"value": {
        "aaa": {
            "value1": "v1","value2": "v2"
        },"bbb": {
            "value1": "v1","ccc": {
            "value1": "v1","value2": "v2"
        }
    }
}

file2

{
    "status": 200,"value": {
        "aaa": {
            "value3": "v3","value4": 4
        },"bbb": {
            "value3": "v3"
        },"ddd": {
            "value3": "v3","value4": 4
        }
    }
}

合并

# 保留key和value
jq -s '.[0] * .[1]' file1 file2
# 只保留值
jq -s '.[0].value * .[1].value | {value: .}' file1 file2

合并后

{
  "value1": 200,"value": {
    "aaa": {
      "value1": "v1","value2": "v2","value3": "v3","value4": 4
    },"bbb": {
      "value1": "v1","value3": "v3"
    },"ccc": {
      "value1": "v1","value2": "v2"
    },"ddd": {
      "value3": "v3","value4": 4
    }
  },"status": 200
}

jq合并两个json文本内容

echo '{"a":"foo","b":"bar"} {"c":"baz","a":0}' | jq -s add

# 输出结果
{
  "a": 0,"b": "bar","c": "baz"
}
echo '{"A": {"a": 1}}' '{"A": {"b": 2}}' '{"B": 3}' |\
  jq --slurp 'reduce .[] as $item ({}; . * $item)'

{
  "A": {
    "a": 1,"b": 2
  },"B": 3
}

jq去除解析内容的双引号

jq 带上-r 选项可以去掉双引号
例如

#不带-r选项
echo '{"a":"foo","b":"bar"}  | jq .a 
"foo"

#带-r选项
echo '{"a":"foo","b":"bar"}  | jq -r .a
foo

相关文章

在Linux系统中,设置ARP防火墙可以通过多种方法实现,包括使...
在Linux环境下,使用Jack2进行编译时,可以采取以下策略来提...
`getid`命令在Linux系统中用于获取当前进程的有效用户ID(EU...
在Linux环境下,codesign工具用于对代码进行签名,以确保其完...
Linux中的`tr`命令,其英文全称是“transform”,即转换的意...
Linux中的ARP防火墙是一种用于防止ARP欺骗攻击的安全措施,它...