为什么sed的+ regex运算符不匹配任何前导空格,但*是?

时间:2017-01-27 04:56:39

标签: regex replace sed regex-greedy

我认为+和*都是贪婪的。为什么+在这种情况下似乎不匹配任何东西,但是*呢?

$ cat test
     a
$ sed -i 's/^[ \t]+//g' test
$ cat test
     a
$ sed -i 's/^[ \t]*//g' test
$ cat test
a

这些只是a之前的空格(而不是制表符),但单独的标签或两者的混合会产生相同的结果。

这是sed (GNU sed) 4.2.2

2 个答案:

答案 0 :(得分:2)

基本正则表达式无法识别

+,这是sed的默认值。使用+与文字+字符匹配。

使用-E选项强制sed识别ERE(扩展正则表达式)。

答案 1 :(得分:1)

你需要逃避' +'用反斜杠\+

sed -i 's/^[ \t]\+//g' test
相关问题