目录
centos安装 jq命令处理json数据
jq合并多个json文件
jq合并两个json文本内容
jq去除解析内容的双引号
#安装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缩进
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
}
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
带上-r
选项可以去掉双引号
例如
#不带-r选项
echo '{"a":"foo","b":"bar"} | jq .a
"foo"
#带-r选项
echo '{"a":"foo","b":"bar"} | jq -r .a
foo