sed加号不起作用

J33*_*3nn 53 regex bash sed

我试图取代/.//././/./././/仅在bash脚本.我已经设法为sed创建正则表达式,但它不起作用.

variable="something/./././"
variable=$(echo $variable | sed "s/\/(\.\/)+/\//g")
echo $variable # this should output "something/"
Run Code Online (Sandbox Code Playgroud)

当我试图仅替换/./子串时,它在sed中使用正则表达式\/\.\/.请问sed的正则表达式需要更多的标志使用具有子串的乘法+还是*

fal*_*tru 72

使用-r选项sed使用扩展正则表达式:

$ variable="something/./././"
$ echo $variable | sed -r "s/\/(\.\/)+/\//g"
something/
Run Code Online (Sandbox Code Playgroud)

  • FYI - 在OSX和BSD上通过'-E'启用扩展正则表达式.谢谢你指出我正确的方向(rtfm为'扩展')! (16认同)