免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: mhss
打印 上一主题 下一主题

不贪婪的 sed  关闭 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2004-11-03 08:31 |只看该作者

不贪婪的 sed

对啊,如果是33343444呢
就是两次匹配了

论坛徽章:
0
22 [报告]
发表于 2004-11-03 09:03 |只看该作者

不贪婪的 sed

原帖由 "killua" 发表:
4呢
就是两次匹配了


对于这种问题,还得用awk。
在unix5.0.5下通过:

echo "3334344"|awk '{ print substr($0, match($0, "34", 2)}'

论坛徽章:
0
23 [报告]
发表于 2004-11-03 09:38 |只看该作者

不贪婪的 sed

原帖由 "begincwcw" 发表:


对于这种问题,还得用awk。
在unix5.0.5下通过:

echo "3334344"|awk '{ print substr($0, match($0, "34", 2)}'


匹配是匹配了,但是要的结果其实是33<3434>44啦  要把匹配的周围加入点什么东西

论坛徽章:
0
24 [报告]
发表于 2004-11-03 10:06 |只看该作者

不贪婪的 sed

原帖由 "killua" 发表:


匹配是匹配了,但是要的结果其实是33<3434>44啦  要把匹配的周围加入点什么东西


太简单。在unix5.0.5下通过:

echo "3334345567"|nawk '{ for(i = 1; i <= length($0); i = i + 2){
if(substr($0, i, 2) == "34" printf("<%s>", substr($0, i, 2))
else printf("%s", substr($0, i, 2))}
printf("\n"
}'

运行结果:
33<34><34>5567

论坛徽章:
0
25 [报告]
发表于 2004-11-03 10:29 |只看该作者

不贪婪的 sed

原帖由 "begincwcw" 发表:


太简单。在unix5.0.5下通过:

echo "3334345567"|nawk '{ for(i = 1; i <= length($0); i = i + 2){
if(substr($0, i, 2) == "34" printf("<%s>", substr($0, i, 2))
else printf("%s", substr($0..........


真乃awk牛人也~ 学习。。。。。。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
26 [报告]
发表于 2004-11-03 20:48 |只看该作者

不贪婪的 sed

佩服,牛人!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP