programing

jq를 사용하여 키 이름을 다른 이름으로 바꾸려면 어떻게 해야 합니까?

telebox 2023. 3. 28. 21:35
반응형

jq를 사용하여 키 이름을 다른 이름으로 바꾸려면 어떻게 해야 합니까?

이건 충분히 쉬울 거야몇 개의 키(이상적으로는 jq)의 이름을 바꾸고 싶은데, 무엇을 해도 오류가 있는 것 같습니다.다음은 json의 예를 제시하겠습니다.

[
 {
  "fruit": "strawberry",
  "veg": "apple",
  "worker": "gardener"
 }
]

veg key의 이름을 fruit2(또는 가장 쉬운 것)로 변경하고 worker key도 작업하고 싶습니다.

SED에서 가능한 건 알지만 JQ를 이해하려고 노력 중이야

다음 jq 접근방식을 사용합니다.

jq '[.[] | .["fruit2"] = .veg | .["job"] = .worker | del(.veg, .worker)]' file

출력:

[
  {
    "fruit": "strawberry",
    "fruit2": "apple",
    "job": "gardener"
  }
]

키(:-)는 with_entries입니다.예: 단일 객체가 주어진 경우:

with_entries(if .key == "veg" then .key = "fruit2" else . end)

이 경우 오브젝트 배열이 있기 때문에 위의 내용을 랩할 수 있습니다.map( ... ).

언급URL : https://stackoverflow.com/questions/43522133/using-jq-how-can-i-replace-the-name-of-a-key-with-something-else

반응형