나는 이것에서 필요합니다 : (예제)
{
"jobs": [
{},
{}
],
"services": {
"service-1": {
"version": "master"
},
"service-2": {
"foo": true,
"version": "master"
},
"service-3": {
"bar": "baz"
}
}
}
이것을 만드십시오 :
{
"services": {
"service-1": {
"version": "master"
},
"service-2": {
"version": "master"
}
}
}
따라서 .services.*.version
. 제발 도와주세요, JQ에 대한 지식으로는 처리 할 수 없습니다.
표현을 .services.*.version
아주 일반적으로 번역하면 tostream
다음과 같이 사용할 수 있습니다 .
reduce (tostream
| select(length==2 and
(.[0] | (.[0] == "services" and
.[-1] == "version")))) as $pv (null;
setpath($pv[0]; $pv[1]) )
메모리 요구 사항을 줄이기 위해 위의 솔루션을 수정하여 위와 reduce
같이 또는 다음과 함께 jq의 스트리밍 파서를 사용할 수 있습니다 fromstream
.
jq -n --stream -f program.jq input.json
여기서 program.jq에는 다음이 포함됩니다.
fromstream(inputs
| select( if length == 2
then .[0] | (.[0] == "services" and
.[-1] == "version")
else . end ) )
.services.*.version.*
.services.*.version
경로의 터미널 구성 요소가 필요하지 않도록 더 광범위하게 해석 하려면 다음으로 .version
간단히 교체하십시오 .[-1] == "version"
.
index("version")
위의.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다