jq 표현식이 잘못된 경로 표현식 오류를 반환하는 문제를 해결하는 방법은 무엇입니까?

jq 표현식이 잘못된 경로 표현식 오류를 반환하는 문제를 해결하는 방법은 무엇입니까?

다음과 같은 package.json 파일이 있습니다.

{
  "name": "service",
  "version": "1.0.0",
  "private": true,
  "description": "my service",
  "license": "none",
  "scripts": {
    "build": "tsc"
  },
  "dependencies": {
    "@mycompany/mypackage": "1.1.1"
  }
}

@mycompany/mypackage 버전을 "1.2.1"로 업데이트하고 싶습니다. 비슷한 글을 찾았어요이것그리고이것jq를 추천합니다.

jq 명령을 실행하면 jq -r '"dependencies.@mycompany/mypackage" |= "1.2.1"' package.json다음 오류가 발생합니다.jq: error (at temp.json:13): Invalid path expression with result "dependencies.@mycompany/m...

내가 아는 한, 내가 사용할 때 경로가 정확합니다.JQ 플레이.

누구든지 어떤 제안이 있습니까?

답변1

당신은 이미 가까이 있습니다. @mycompany/mypackage@는 모두 특수 문자이므로 키 를 인용해야 /하지만 전체 필터의 일부가 아니라 개별적으로 인용해야 합니다. .루트 개체를 쿼리하려면 리더도 필요합니다 . 이것은 작동합니다:

$ jq -r '.dependencies."@mycompany/mypackage" |= "1.2.1"' package.json
{
  "name": "service",
  "version": "1.0.0",
  "private": true,
  "description": "my service",
  "license": "none",
  "scripts": {
    "build": "tsc"
  },
  "dependencies": {
    "@mycompany/mypackage": "1.2.1"
  }
}

관련 정보