Chr*_*iss 0 sed regular-expression
我需要更新文件中的版本号。在文件中有一行包含这样的语义版本号:
foo.bar.blah.blub#10.6.1
Run Code Online (Sandbox Code Playgroud)
现在我想寻找前缀“blah.blub”来识别正确的行并替换版本号。
我得到以下显然不起作用的信息:
sed -i -e 's/^blah.blub#\d\.\d\.\d$/blah.blub'${VERSION}/$ README.MD
Run Code Online (Sandbox Code Playgroud)
默认情况下,Sed 使用基本正则表达式,并且大多数实现(包括您似乎正在使用的 GNU 实现)不理解\d
. 此外,您的行不以 开头blah.blub
,因此^
意味着它永远不会匹配。以及其他各种问题。
不过,这应该可以满足您的需求:
sed -i -E "/blah\.blub#/s/#.*/#$VERSION/" README.MD
Run Code Online (Sandbox Code Playgroud)
这将#
用 的内容替换 a 之后的文本$VERSION
,但前提是该行包含blah.blub
. 现在,这是否足够具体来处理您的数据,我不知道,因为您只向我们展示了这一行。