分页: 1 / 1

sed如何获得一个最短的匹配?

发表于 : 2006-12-23 12:58
xxxxusky
如:aaaa:bbbb:ccccc
要替换aaaa:部分
如果用sed -e 's/.*://'显然会将aaaa:bbbb:替换
如何才能获得最短的匹配呢?

发表于 : 2006-12-23 20:02
aBiNg

代码: 全选

sed -e 's/[a-z]*://'

发表于 : 2006-12-23 21:36
xxxxusky
如果前面有特殊字符呢?
不可能在[]里面把他们全写出来吧

发表于 : 2006-12-24 10:18
aBiNg
regexp的贪婪性是由来已久了,试试全局匹配:

代码: 全选

echo "aaa:bbb:ccc" | sed -e 's/\(.*\):\(.*\):\(.*\)/\2:\3/'
来阻止它的贪婪性。

注:如果文本毫无规律可言,sed替换也没有办法处理了。

发表于 : 2006-12-25 12:00
laborer

代码: 全选

echo aaaa:bbbb:ccccc | sed 's/[^:]*://'

发表于 : 2006-12-26 8:49
xxxxusky
laborer 写了:

代码: 全选

echo aaaa:bbbb:ccccc | sed 's/[^:]*://'

that is good