잘못된 경로 표현 오류를 반환하는 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"
  }
}

관련 정보