您的位置:首页 > 运维架构 > Shell

正则表达式的贪婪匹配

2009-07-05 09:26 295 查看
str="uid=100(guest) gid=100(others) groups=10(users),11(floppy)"[/b]
取[/b]guest  others  users  floppy[/b]
正则表达式是有贪婪性的,它总是与最长的可能长度匹配,而且越是排在前面的通配符优先级越高。[/b][/b]
 [/b]
#!/bin/bash[/b]
stra="uid=100(guest) gid=100(others) groups=10(users),11(floppy)"[/b]
strb="uid=100(guest)gid=100(others)groups=10(users),11(floppy)"[/b]
 [/b]
#floppy[/b]
echo $stra |sed 's/.*(\(.*\)).*/\1/'[/b]
echo $stra |awk '{a=substr($3,length($3)-6,6); b=substr($3,1,6); c=length($3);print a,b,c}'[/b]
#guest[/b]
echo $stra |sed 's/[^(]*(\([^)]*\)).*/\1/'[/b]
echo $stra |awk '{a=gensub(/.*\((.*)\)/,"\\1","g",$1);print a}'[/b]
#others[/b]
echo $stra |sed 's/users\|others/***&***/g'[/b]
echo $stra |sed 's/[^(]*([^)]*)[^(]*(\([^)]*\)).*/\1/'[/b]
echo $stra |sed 's/[^ ]*[ ][^(]*(\([^)]*\)).*/\1/'[/b]
#users[/b]
echo $stra |sed 's/.*[ ][^(]*(\([^)]*\)).*/\1/'[/b]
echo $stra |awk '{a=gensub(/[^(]*\(([^)]*).*/,"\\1","g",$3);print a}'[/b]
[/b] 
[/b]时间一久自己都看的晕忽忽的。。。记下来用的时候翻翻
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell 正则 sed 贪婪 awk