正则表达式:匹配多个空格不起作用

时间:2014-01-28 14:45:54

标签: regex sed

我在文件中有这个内容:

  core        = 7.x
  base theme  = adaptivetheme
  release     = 7.x-3.x
  engine      = phptemplate

我想把所有事情都追到:base theme =到行尾,所以我想得到adaptivetheme

基于https://unix.stackexchange.com/a/24151/37309我正在尝试:

sed -n 's/base\stheme\s+=\s//p' file
sed -n 's/base\stheme += //p' file

但它不起作用。不过这确实有效:

sed -n 's/base\stheme  = //p' file

那么我做错了什么?我想匹配它,无论可以有多少空格。

2 个答案:

答案 0 :(得分:2)

使用-r - 标志扩展正则表达式支持:

sed -r 's/base\stheme\s+=\s//'

enter image description here

答案 1 :(得分:2)

您可以使用

sed -n 's/base theme \+= //p' file

这表示“一个或多个空格”(这是转义\+的含义。)

sed本身仅使用基本的正则表达式(BRE)。如果您想使用extended regex某些规则更改 - 例如需要转义哪些字符。您可以使用-r标志调用扩展模式。然后+不再需要转义。

这些正则表达式的方言非常令人困惑。我一直都要自己查一下......