sh/bash/dash/ksh/zsh等Shell脚本
-
xxxxusky
- 帖子: 12
- 注册时间: 2006-09-24 19:20
#1
帖子
由 xxxxusky » 2006-12-23 12:58
如:aaaa:bbbb:ccccc
要替换aaaa:部分
如果用sed -e 's/.*://'显然会将aaaa:bbbb:替换
如何才能获得最短的匹配呢?
-
aBiNg
- 帖子: 1331
- 注册时间: 2006-07-09 12:22
- 来自: 南京
#2
帖子
由 aBiNg » 2006-12-23 20:02
代码: 全选
sed -e 's/[a-z]*://'
-
xxxxusky
- 帖子: 12
- 注册时间: 2006-09-24 19:20
#3
帖子
由 xxxxusky » 2006-12-23 21:36
如果前面有特殊字符呢?
不可能在[]里面把他们全写出来吧
-
aBiNg
- 帖子: 1331
- 注册时间: 2006-07-09 12:22
- 来自: 南京
#4
帖子
由 aBiNg » 2006-12-24 10:18
regexp的贪婪性是由来已久了,试试全局匹配:
代码: 全选
echo "aaa:bbb:ccc" | sed -e 's/\(.*\):\(.*\):\(.*\)/\2:\3/'
来阻止它的贪婪性。
注:如果文本毫无规律可言,sed替换也没有办法处理了。
-
laborer
- 帖子: 1016
- 注册时间: 2005-10-25 11:15
-
联系:
#5
帖子
由 laborer » 2006-12-25 12:00
代码: 全选
echo aaaa:bbbb:ccccc | sed 's/[^:]*://'
hreiser@oakland:~$ killall -9 wife
police@oakland:~$ sudo find / -user hreiser
court@oakland:~$ sudo mv /home/hreiser /jail/
court@oakland:~$ sudo usermod -d /jail/hreiser -s "/usr/sbin/chroot /jail/" hreiser
-
xxxxusky
- 帖子: 12
- 注册时间: 2006-09-24 19:20
#6
帖子
由 xxxxusky » 2006-12-26 8:49
laborer 写了:代码: 全选
echo aaaa:bbbb:ccccc | sed 's/[^:]*://'
that is good