IT이야기

jq를 사용하여 숫자를 문자열로 변환

cyworld 2021. 9. 22. 17:36
반응형

jq를 사용하여 숫자를 문자열로 변환하려면 어떻게 해야 합니까?


다음 jq 명령과 Json이 제공됩니다.

jq '.[]|[.string,.number]|join(": ")' <<< '
[
  {
    "number": 3,
    "string": "threee"
  },
  {
    "number": 7,
    "string": "seven"
  }
]
'

출력 형식을 다음과 같이 지정하려고 합니다.

three: 3
seven: 7

불행히도 내 시도는 다음 오류를 발생시킵니다.

jq: 오류: 문자열과 숫자를 추가할 수 없습니다.

숫자를 문자열로 변환하여 둘 다 결합할 수 있도록 하려면 어떻게 해야 합니까?


jq 명령에는 tostring 기능이 있습니다. 시행 착오를 통해 사용법을 배우는 데 시간이 걸렸습니다. 사용 방법은 다음과 같습니다.

jq -r '.[] | [ .string, .number|tostring ] | join(": ")' <<< '
[{ "number": 9, "string": "nine"},
 { "number": 4, "string": "four"}]
'
nine: 9
four: 4

대안적이고 틀림없이 더 직관적인 형식은 다음과 같습니다.

jq '.[] | .string + ": " + (.number|tostring)' <<< ...

주변에 괄호가 필요하다는 점에 주목할 가치가 있습니다 .number|tostring.


이러한 간단한 경우 문자열 보간 의 암시적 문자열 캐스팅이 수행됩니다.

.[] | "\( .string ): \( .number )"

jq‣play 에서 실제로 확인하십시오 .


'map_values' 연산자를 사용하여 객체 수정

예시

{"foo": {"바": 3}}

map_values( . + {"막대": .bar|tostring} )

산출

{ "푸": { "막대": "3" } }

ReferenceURL : https://stackoverflow.com/questions/35365769/how-do-i-use-jq-to-convert-number-to-string

반응형