JSON 파일의 모든 값을 *로 바꾼 다음 출력을 새 JSON 파일로 반환해야 합니다.
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"Global": {
"Version": "1.0.0",
"Environment": {
"Long": "Local",
"Short": "loc"
},
"ActiveDirectory": {
"Role": {
"User": "user",
"Manager": "manager",
"Admin": "admin"
}
},
"Jwt": {
"Authority": "http://localost:8089/auth/reals/master",
"Audience": "pneumanet-client",
"AuthorizationUrl": "http://localost:8089/auth/reals/master/protocol/openid-connect/auth",
"TokenUrl": "http://localost:8089/auth/reals/master/protocol/openid-connect/token",
"Real": "master"
}
}
}
"Default": "Information"과 같은 값을 가진 모든 키를 볼 수 있듯이 "Information"을 *로 변경하고 싶습니다. 이는 모든 키 값 필드에 적용되어야 합니다. 내가 알아낼 수 없기 때문에 이것이 jq로 가능합니까? 감사해요.
답변1
..
한 가지 가능한 접근 방식은 재귀 하강( ) 을 사용 하고 값이 있는 노드를 선택 "Information"
하고 업데이트하는 것입니다.
$ jq '(.. | select(. == "Information")) |= "*"' file.json
{
"Logging": {
"LogLevel": {
"Default": "*",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "*"
}
},
"Global": {
"Version": "1.0.0",
"Environment": {
"Long": "Local",
"Short": "loc"
},
"ActiveDirectory": {
"Role": {
"User": "user",
"Manager": "manager",
"Admin": "admin"
}
},
"Jwt": {
"Authority": "http://localost:8089/auth/reals/master",
"Audience": "pneumanet-client",
"AuthorizationUrl": "http://localost:8089/auth/reals/master/protocol/openid-connect/auth",
"TokenUrl": "http://localost:8089/auth/reals/master/protocol/openid-connect/token",
"Real": "master"
}
}
}