Jq

如何修復返回無效路徑表達式錯誤的 jq 表達式?

  • March 13, 2020

我有一個如下所示的 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 play時路徑是正確的。

有沒有人有什麼問題的建議?

你很接近。您確實需要引用@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"
 }
}

引用自:https://unix.stackexchange.com/questions/572730