免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3376 | 回复: 13
打印 上一主题 下一主题

谁能用sed和awk把符合正则表达式的那些单词打印出来 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-08 11:02 |只看该作者 |倒序浏览
时打印符合正则表达式的单词,而不是行或者句子。
谢谢。

论坛徽章:
0
2 [报告]
发表于 2007-05-08 11:05 |只看该作者
说详细点吧,最好可以举个例子出来。

论坛徽章:
0
3 [报告]
发表于 2007-05-08 11:10 |只看该作者
我之前也提过类似的问题,比如有一个缓冲如下:
aaabbbcccyy
ddeeff
ggg

我要把出现过三次的单词打印出来,其正则表达式为[a-z]{3},我想要的输出结果是:
aaa
bbb
ccc
ggg

论坛徽章:
0
4 [报告]
发表于 2007-05-08 11:10 |只看该作者
我想要一个通用的方法,不是单单针对这个例子。

论坛徽章:
0
5 [报告]
发表于 2007-05-08 11:17 |只看该作者
我搞不定,还是等高手来解决吧。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
6 [报告]
发表于 2007-05-08 11:20 |只看该作者
原帖由 l.darkfire 于 2007-5-8 11:10 发表
我想要一个通用的方法,不是单单针对这个例子。

具体情况具体分析, 通用的不大可能, 系统平台不同, shell种类不同, 工具版本不同, 很难有通用的

论坛徽章:
0
7 [报告]
发表于 2007-05-08 11:52 |只看该作者
稍微通用一点就好......

论坛徽章:
0
8 [报告]
发表于 2007-05-08 11:54 |只看该作者
没有通用的,通用就用word的查找替换好了

如果每次实现的规律是一样的,比如你上面的说的提取 字母重复三次的,到可能写个代码的

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
9 [报告]
发表于 2007-05-08 12:36 |只看该作者
针对不同的问题,选择最合适的工具。这才是正确的方法。你的问题用GNU grep是正解:
grep -Po '(\w)\1\1'
如果你的平台没有GNU工具,可以试试用perl:
perl -lne 'print $1 x 3 while /(\w)\1\1/g'
硬要用sed/awk的话是比较困难的。例如:
sed  -n 's/\([a-zA-Z]\)\1\1/==&\n/gp'|sed -n '/^==/s/=//gp'
awk的正则相对较弱,就更麻烦了。

论坛徽章:
0
10 [报告]
发表于 2007-05-08 13:01 |只看该作者
woodie 果然是强人,Orz

可以把“sed  -n 's/\([a-zA-Z]\)\1\1/==&\n/gp'|sed -n '/^==/s/=//gp'”简单讲解一下吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP