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 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" } }