如何用jq获取完整的对象/数组?
How to get the complete object / array with jq?
我是 运行:
$ jq ".environments[] | select(.name | contains(\"docker\")) | .database.database_config.host = \"${DGRAPHIP}\"" weaviate.conf.json
关于此文件:https://github.com/weaviate/weaviate/blob/develop/weaviate.conf.json
这个输出是(如果DGRAPHIP = 1.2.3.4
):
{
"name": "docker",
"database": {
"name": "dgraph",
"database_config": {
"host": "1.2.3.4", <== THIS IS GOOD!
"port": 9080
}
},
"schemas": {
"Thing": "https://raw.githubusercontent.com/weaviate/weaviate-semantic-schemas/master/weaviate-Thing-ontology-s
chema_org.min.json",
"Action": "https://raw.githubusercontent.com/weaviate/weaviate-semantic-schemas/master/weaviate-Action-ontology
-schema_org.min.json"
},
"mqttEnabled": false
}
这不是想要的结果,我希望将结果封装为:
{
"environments": [{
RESULTS
}]
}
简单调整:
jq --arg dgraphip "1.2.3.4" '{"environments" : .environments
| map(select(.name | contains("docker"))
| .database.database_config.host = $dgraphip)}' weaviate.conf.json
输出:
{
"environments": [
{
"name": "docker",
"database": {
"name": "dgraph",
"database_config": {
"host": "1.2.3.4",
"port": 9080
}
},
"schemas": {
"Thing": "https://raw.githubusercontent.com/weaviate/weaviate-semantic-schemas/master/weaviate-Thing-ontology-schema_org.min.json",
"Action": "https://raw.githubusercontent.com/weaviate/weaviate-semantic-schemas/master/weaviate-Action-ontology-schema_org.min.json"
},
"mqttEnabled": false
}
]
}
这是另一种使用 update assignment |=
with map
的方法
.environments |= map(
select(.name | contains("docker"))
| .database.database_config.host = "1.2.3.4"
)
样本运行(假设数据在data.json
)
$ jq -M '.environments |= map(select(.name | contains("docker")) | .database.database_config.host = "1.2.3.4")' data.json
{
"environments": [
{
"name": "docker",
"database": {
"name": "dgraph",
"database_config": {
"host": "1.2.3.4",
"port": 9080
}
},
"schemas": {
"Thing": "https://raw.githubusercontent.com/weaviate/weaviate-semantic-schemas/master/weaviate-Thing-ontology-schema_org.min.json",
"Action": "https://raw.githubusercontent.com/weaviate/weaviate-semantic-schemas/master/weaviate-Action-ontology-schema_org.min.json"
},
"mqttEnabled": false
}
]
}
我是 运行:
$ jq ".environments[] | select(.name | contains(\"docker\")) | .database.database_config.host = \"${DGRAPHIP}\"" weaviate.conf.json
关于此文件:https://github.com/weaviate/weaviate/blob/develop/weaviate.conf.json
这个输出是(如果DGRAPHIP = 1.2.3.4
):
{
"name": "docker",
"database": {
"name": "dgraph",
"database_config": {
"host": "1.2.3.4", <== THIS IS GOOD!
"port": 9080
}
},
"schemas": {
"Thing": "https://raw.githubusercontent.com/weaviate/weaviate-semantic-schemas/master/weaviate-Thing-ontology-s
chema_org.min.json",
"Action": "https://raw.githubusercontent.com/weaviate/weaviate-semantic-schemas/master/weaviate-Action-ontology
-schema_org.min.json"
},
"mqttEnabled": false
}
这不是想要的结果,我希望将结果封装为:
{
"environments": [{
RESULTS
}]
}
简单调整:
jq --arg dgraphip "1.2.3.4" '{"environments" : .environments
| map(select(.name | contains("docker"))
| .database.database_config.host = $dgraphip)}' weaviate.conf.json
输出:
{
"environments": [
{
"name": "docker",
"database": {
"name": "dgraph",
"database_config": {
"host": "1.2.3.4",
"port": 9080
}
},
"schemas": {
"Thing": "https://raw.githubusercontent.com/weaviate/weaviate-semantic-schemas/master/weaviate-Thing-ontology-schema_org.min.json",
"Action": "https://raw.githubusercontent.com/weaviate/weaviate-semantic-schemas/master/weaviate-Action-ontology-schema_org.min.json"
},
"mqttEnabled": false
}
]
}
这是另一种使用 update assignment |=
with map
.environments |= map(
select(.name | contains("docker"))
| .database.database_config.host = "1.2.3.4"
)
样本运行(假设数据在data.json
)
$ jq -M '.environments |= map(select(.name | contains("docker")) | .database.database_config.host = "1.2.3.4")' data.json
{
"environments": [
{
"name": "docker",
"database": {
"name": "dgraph",
"database_config": {
"host": "1.2.3.4",
"port": 9080
}
},
"schemas": {
"Thing": "https://raw.githubusercontent.com/weaviate/weaviate-semantic-schemas/master/weaviate-Thing-ontology-schema_org.min.json",
"Action": "https://raw.githubusercontent.com/weaviate/weaviate-semantic-schemas/master/weaviate-Action-ontology-schema_org.min.json"
},
"mqttEnabled": false
}
]
}