jq的基本用法:修改访问
以输入t.json为例:
{
"F1": 9,
"F2": "F21",
"F5": [
{
"F51": 511,
"F52": "F521"
},
{
"F51": 512,
"F52": "F522"
}
]
}
修改字段
$ jq '.F1=100' t.json
{
"F1": 100,
"F2": "F21",
"F5": [
{
"F51": 511,
"F52": "F521"
},
{
"F51": 512,
"F52": "F522"
}
]
}
$ jq '.F5[1].F52="new value"' t.json
{
"F1": 9,
"F2": "F21",
"F5": [
{
"F51": 511,
"F52": "F521"
},
{
"F51": 512,
"F52": "new value"
}
]
}
增加字段
$ jq '.F3="new value"' t.json
{
"F1": 9,
"F2": "F21",
"F5": [
{
"F51": 511,
"F52": "F521"
},
{
"F51": 512,
"F52": "F522"
}
],
"F3": "new value"
}
$ jq '.F5[1].F53="new value"' t.json
{
"F1": 9,
"F2": "F21",
"F5": [
{
"F51": 511,
"F52": "F521"
},
{
"F51": 512,
"F52": "F522",
"F53": "new value"
}
]
}
增加数组和map
$ jq '.F5[2]={"F51": 513, "F52": "F523"}' t.json
{
"F1": 9,
"F2": "F21",
"F5": [
{
"F51": 511,
"F52": "F521"
},
{
"F51": 512,
"F52": "F522"
},
{
"F51": 513,
"F52": "F523"
}
]
}
如果数组是简单类型:
$ jq . t.json
{
"F3": [
"F31",
"F32"
]
}
$ jq '.F3[2]="F33"' t.json
{
"F3": [
"F31",
"F32",
"F33"
]
}
增加数组元素
利用length函数得到数组的长度,然后把值设置到当前位置。
$ jq '.F3[.F3|length]="NEWValue"' t.json
删除
使用del函数删除元素,包括基本元素,对象和数组元素。
$ jq 'del(.F1)' t.json
{
"F2": "F21",
"F5": [
{
"F51": 511,
"F52": "F521"
},
{
"F51": 512,
"F52": "F522"
}
]
}
$ jq 'del(.F5[1].F52)' t.json
{
"F1": 9,
"F2": "F21",
"F5": [
{
"F51": 511,
"F52": "F521"
},
{
"F51": 512
}
]
}
删除一个数组成员:
$ jq 'del(.F5[1])' t.json
{
"F1": 9,
"F2": "F21",
"F5": [
{
"F51": 511,
"F52": "F521"
}
]
}
删除数组成员
$ cat t.json
{
"F": [
"F0",
"F1",
"F2",
"F3",
"F4",
"F5"
]
}
$ jq 'del(.F)' t.json # delete field F
{}
$ jq 'del(.F[])' t.json # delete members of field F
{
"F": []
}
$ jq 'del(.F[0])' t.json # delete member of fields F[0]
{
"F": [
"F1",
"F2",
"F3",
"F4",
"F5"
]
}
$ jq 'del(.F[0,2,4])' t.json # delete member of fields F[0], F[2], and F[4]
{
"F": [
"F1",
"F3",
"F5"
]
}
执行多次修改
使用("|")连接多个命令。
连接符("|")功能类似shell里面的("|"),把前面命令的输出作为后面命令的输入。
$ jq 'del(.F1) | del(.F5[1])' t.json
{
"F2": "F21",
"F5": [
{
"F51": 511,
"F52": "F521"
}
]
}
修改多个字段:
$ jq '.F1="New F1" | .F2="New F2"' t.json
{
"F1": "New F1",
"F2": "New F2",
"F5": [
{
"F51": 511,
"F52": "F521"
},
{
"F51": 512,
"F52": "F522"
}
]
}
或者:
$ jq '. +{F1: "New Fa", F2: "New F2"}' t.json
{
"F1": "New Fa",
"F2": "New F2",
"F5": [
{
"F51": 511,
"F52": "F521"
},
{
"F51": 512,
"F52": "F522"
}
]
}