linux shell jq命令 合并json文件

本文介绍了如何在CentOS系统中安装和使用jq命令来处理JSON数据,包括合并多个JSON文件、合并两个JSON文本内容以及去除解析内容的双引号。通过示例展示了如何利用jq的选项如`-s`、`add`和表达式进行操作,帮助读者更好地理解和应用jq工具。
摘要由CSDN通过智能技术生成

目录

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

常用选项

-c 紧凑输出json数据
-e 根据输出结果设置命令退出状态码
-s 读取所有输入到一个数组
-r 输出原始字符串,而不是一个JSON格式
-C 高亮显示
-M 单色显示
-S 排序对象
--tab 使用tab缩进

jq合并多个json文件

file1

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

file2

{
    "status": 200,
    "timestamp": 1382461861,
    "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,
  "timestamp": 1382461861,
  "value": {
    "aaa": {
      "value1": "v1",
      "value2": "v2",
      "value3": "v3",
      "value4": 4
    },
    "bbb": {
      "value1": "v1",
      "value2": "v2",
      "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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值