我正在尝试使用sed来增加conf文件中的版本号。版本号的格式如下:
MENDER_ARTIFACT_NAME = "release-6"
。
使用以下内容:
sed -r 's/(.*)(release\-)([0-9]*)(.*)/echo "\1\2$((\3+1))\4"/ge'
结果是这样的:
MENDER_ARTIFACT_NAME = release-7
I.E。它有效,但是缺少引号。我已经检查了正则表达式文档,并且(。*)应该与所有非换行符匹配任意次,因此第一个应该匹配所有内容,包括release-6
前的引号,第二个应该匹配所有内容,包括引号,release-6
之后。相反,它似乎完全删除了引号。我在做什么错了?
答案 0 :(得分:0)
e
标志将替换结果作为shell命令执行...
表示引号用于显示一堆字符。即尝试echo MENDER_ARTIFACT_NAME = "release-6"
。您应该在echo语句中手动添加转义的引号:
sed -r 's/^(.*)(release\-)([0-9]+)/echo "\1\\"\2$((\3+1))\\""/ge'