我有一个 package.json 文件,其中包含版本行号:
"version": "3.2.47",
我想用sed更改版本号,使版本号的最后一部分少1。所以在上面的例子中它将变成:
"version": "3.2.46",
其他例子:
"version": "3.2.50",
将变成:
"version": "3.2.49",
我该怎么做?我一开始尝试用任何东西替换整个内容,但由于引号而在第一个障碍中失败了。
请记住,同一文件中的其他内容还会有其他版本号,因此它需要定位这一特定行,即其中包含
"version":
的行。
我的尝试没有任何作用:
sed -i -E "s/\"version\": \"\d+\.\d+\.\d*\d\"/zzzz/g" package.json
如果是json,你可以使用像
jq
这样的json感知工具来处理。天真地:
jq '
.version |= (
split(".") as $a |
($a|last|tonumber-1) as $n |
$a[0:-1]+[$n]|join(".")
)
' package.json >package.json.new