jq에서 y를 기반으로 한 x의 값을 얻습니다. name
을 기준으로 DATABASES_DEFAULT
의 값을 얻으려고 시도하면 전체적으로 많은 숫자가 name
이고 json 파일은 완전히 손실됩니다.jq 복잡한 json 파일
내 파일은 다음과 같이 표시됩니다 (aws ecs describe-task-definition
의 출력). 나는 구조를 그대로 유지할 수있는 가장 기초적인 예제로 이것을 제거했다.
{
"taskDefinition": {
"status": "bar",
"family": "bar2",
"volumes": [],
"taskDefinitionArn": "bar3",
"containerDefinitions": [
{
"dnsSearchDomains": [],
"environment": [
{
"name": "bar4",
"value": "bar5"
},
{
"name": "bar6",
"value": "bar7"
},
{
"name": "DATABASES_DEFAULT",
"value": "foo"
}
],
"name": "baz",
"links": []
},
{
"dnsSearchDomains": [],
"environment": [
{
"name": "bar4",
"value": "bar5"
},
{
"name": "bar6",
"value": "bar7"
},
{
"name": "DATABASES_DEFAULT",
"value": "foo2"
}
],
"name": "boo",
"links": []
}
],
"revision": 1
}
}
은 내가 name
이 baz
입니다 DATABASES_DEFAULT
의 값이 필요합니다. name
키가 많이 있는데, 특별히 environment
외부의 키 쌍에 대해 이야기하고 있습니다.
저는이 문제를 해결하기 위해 노력해 왔지만 중첩 된 값에 액세스하는 방법을 이해하지 못한다는 것을 깨닫기 전에이 문제를 해결했습니다. 분명히이가) 작동하지 않습니다
jq: error: DATABASES_DEFAULT/0 is not defined at <top-level>, line 1:
.[] | select(.name==DATABASES_DEFAULT) | .value
jq: 1 compile error
를 반환하고, B)는 않았더라도, 그것은 name
값의 독립적입니다됩니다
jq '.[] | select(.name==DATABASES_DEFAULT) | .value'
. 내 생각은 db 기본값을 모두 반환 한 다음 baz를 사용하여 그 값을 확인하는 것이지만 올바른 방법인지는 모르겠습니다.
'는 리터럴 문자열이 아닌 키 이름이나 함수로 DATABASES_DEFAULT'는 따옴표에 있어야합니다. – chepner