在Linux正则使用过程中,默认使用的是贪婪模式,如
贪婪模式常用的量词有:
{m,n}
{m,}
?
*
+
如果改成非贪婪模式要量词后面加上一个问号?,只需这样:
{m,n}?
{m,}?
??
*?
+?
在我执行的时候发现?不起作用,加上后匹配不到任何内容了。
需要用[^/]* 代替*?,来使用非贪婪模式,如下:
sed -i 's@abc-\([^/]*\)-\([^\]*\)\.ef@abc-\1-cde-\2.ef@g' test.txt
其中括号是用来获取字串,\1,\2是用来展示对应的字串。