Chinaunix

标题: 请问awk和sed支持的正则表达式区别。 [打印本页]

作者: listen1001    时间: 2008-11-22 11:37
标题: 请问awk和sed支持的正则表达式区别。
要匹配4个字母  sed里面可以用 /[a-zA-Z]\{4\}/匹配
awk下用就没反应。 awk是不是不支持 a\{m\}这个m次重复a  ??
那在awk下有没有别的取代的表达, 不会只能重复4次吧 [a-zA-Z][a-zA-Z][a-zA-Z][a-zA-Z]
作者: biglazybug    时间: 2008-11-22 11:47
加上参数--posix
作者: listen1001    时间: 2008-11-22 11:56
file文件是这种格式
Mike Harrington510) 548-1278:250:100:175
要求打印只有4个字母的姓。

nawk --posix -F"[ :]" '$2~/[a-zA-Z]\{4\}/{print $2}'  file
提示找不到--posix参数。
我用的debian etch系统。
作者: biglazybug    时间: 2008-11-22 12:01
标题: 回复 #3 listen1001 的帖子
nawk没用过 不熟悉
apt-get install gawk  就会有--posix 支持 数量字符匹配
作者: 7717060    时间: 2008-11-22 12:46
原帖由 biglazybug 于 2008-11-22 12:01 发表
nawk没用过 不熟悉
apt-get install gawk  就会有--posix 支持 数量字符匹配

学习了
作者: yezhulin1982    时间: 2008-11-22 14:52
原帖由 biglazybug 于 2008-11-22 12:01 发表
nawk没用过 不熟悉
apt-get install gawk  就会有--posix 支持 数量字符匹配


不错。
作者: biglazybug    时间: 2008-11-22 15:10
标题: 回复 #6 yezhulin1982 的帖子
哈哈 这是不久前Tim大侠教我的
作者: listen1001    时间: 2008-11-22 16:07
gawk --posix -F"[ :]" '$2~/^[A-Za-z]{4}$/{print $2}' file
搞定了,{4} 连转义符都不用打了,多谢
作者: xwmhmily    时间: 2008-11-22 20:31
sed 用的 RE 是 BRE , 如果要用 ERE 的话要加上-e 参数
awk 用的 RE 是 ERE ,所以也就不需要用 \ 转义了

谢谢楼下的提醒,不是-e ,是-r

[ 本帖最后由 xwmhmily 于 2008-11-29 20:05 编辑 ]
作者: ynchnluiti    时间: 2008-11-22 21:05
原帖由 xwmhmily 于 2008-11-22 20:31 发表
sed 用的 RE 是 BRE , 如果要用 ERE 的话要加上-e 参数
awk 用的 RE 是 ERE ,所以也就不需要用 \ 转义了

说的是-r吧
作者: biglazybug    时间: 2008-11-22 21:41
标题: 回复 #10 ynchnluiti 的帖子
对 sed中不转义RE 参数是-r
作者: adminsinx    时间: 2008-11-25 10:22
学习中。。。。
作者: huanghaojie    时间: 2008-11-25 10:32
学习中
作者: shaneqi    时间: 2008-11-25 10:33
学习
作者: 寂寞烈火    时间: 2008-11-25 10:38
原帖由 xwmhmily 于 2008-11-22 20:31 发表
sed 用的 RE 是 BRE , 如果要用 ERE 的话要加上-e 参数
awk 用的 RE 是 ERE ,所以也就不需要用 \ 转义了

简单明了
作者: yuhe27913    时间: 2008-11-25 10:40
mark




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2