使用sed替换package.json文件中的版本号
这是my package.json文件的一部分使用sed替换package.json文件中的版本号,json,sed,Json,Sed,这是my package.json文件的一部分 { "name": "org-team-module", "version": "1.1.0-snapshot", "description": "Some description", "scripts": { "start": "n
{
"name": "org-team-module",
"version": "1.1.0-snapshot",
"description": "Some description",
"scripts": {
"start": "npm run build && npm run copy-static-assets && npm run serve",
"build": "rimraf dist && npx tsc && echo npm run lint",
我想用一个特定的值替换这个版本,比如1.2.0-snapshot
这就是我现在所拥有的
sed -nE -i 's/(^\s*"version": ")(.*?)(",$)/\11.2.0-snapshot\3/p' test.json
但是,当我添加-I标志以替换时;整个文件将替换为搜索的值。
i、 e.替换后的整个文件内容为
"version": "1.2.0-snapshot",
如何替换文件中的特定行
sed
不适合处理JSON文件;如果“version”
及其值不在同一行(这不是常见情况,但肯定是有效的JSON),脚本将失败
我建议改用。它知道如何解析和生成JSON,脚本变得更小、更清晰
将version
的值替换为固定值非常简单:
jq'.version=“1.2.0-snapshot”'package.json
它不会修改原始文件,但会在屏幕上转储修改后的JSON。脚本可以将其输出重定向到临时文件,然后将临时文件移到原始文件上,如下所示:
jq'.version=“1.2.0-snapshot”'package.json>package.json.new
mv package.json.new package.json
我建议简单地将参数更改为-E-I
并删除/p
,例如sed-E-I的/(^\s*“version”)(.*?(,$)/\11.2.0-snapshot\3/'test。json
sed
不适合处理json文件;如果“version”
及其值不在同一行(这不是常见情况,但肯定是有效的JSON),脚本将失败。我建议改用。它知道如何解析和生成JSON,脚本变得更小、更清晰。