免费注册 查看新帖 |

Chinaunix

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

[文本处理] 关于awk和正则表达式 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-06-22 17:03 |只看该作者 |倒序浏览
本帖最后由 陆地蛮牛 于 2013-06-22 17:38 编辑

awk 要求找出$2中字母长度为4的。应该怎么弄,我这样为什么不行
  1. awk F'[: ]' '$2~/[:alpha:]\{4\}/print $0' file.txt
  2. 或者awk F'[: ]' '$2~/[A-Za-z]\{4\}/print $0' file.txt
复制代码
都是没有结果

论坛徽章:
0
2 [报告]
发表于 2013-06-22 17:14 |只看该作者

还是不对

本帖最后由 陆地蛮牛 于 2013-06-22 17:39 编辑

还是不对。。。。。。。

论坛徽章:
0
3 [报告]
发表于 2013-06-22 17:47 |只看该作者
下面是个例子,参考下
  1. [root@rc tmp]# cat a
  2. 1 wilson
  3. 2 zhuotao
  4. 3 zhuo
  5. 4 tian
  6. 5 yuanz
  7. [root@rc tmp]# awk '{if(length($2)==4){print$0}}' a
  8. 3 zhuo
  9. 4 tian
复制代码

论坛徽章:
4
白羊座
日期:2013-09-17 21:59:30技术图书徽章
日期:2013-10-12 22:16:03白羊座
日期:2013-10-14 11:01:40双子座
日期:2013-12-17 18:26:39
4 [报告]
发表于 2013-06-22 18:42 |只看该作者
回复 1# 陆地蛮牛
  1. awk -F'[: ]' '$2~/^[[:alpha:]]{4}$/{print $0}'
复制代码
  1. awk -F'[: ]' '$2~/^[A-Za-z]{4}$/{print $0}'
复制代码
没有具体的文本,域分割符不知道对不对

   

论坛徽章:
0
5 [报告]
发表于 2013-06-22 20:15 |只看该作者
我试试,不过我有个问题诶,为什么我在书上看到的正则表达式表示重复的是/{4/}。。。。
回复 4# 井蛙夏虫


   

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
6 [报告]
发表于 2013-06-22 20:16 |只看该作者
本帖最后由 WilliBhamlll 于 2013-06-23 14:25 编辑

回复 1# 陆地蛮牛


    在gawk 4.0以下版本中使用{n,m}这样的正则,需要在在前面加上
--re-interval或--posix选项。

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
7 [报告]
发表于 2013-06-22 20:19 |只看该作者
  1. [WilliBhamlll@CC ~]$ echo 'aaaa'|awk '/a{1,4}/'
  2. [WilliBhamlll@CC ~]$ echo 'aaaa'|awk --posix '/a{1,4}/'
  3. aaaa
复制代码

论坛徽章:
0
8 [报告]
发表于 2013-06-22 20:21 |只看该作者
  1. $cat lab3.data

  2. Mike Harrington:(510) 548-1278:250:100:175

  3. Christian Dobbins:(408) 538-2358:155:90:201

  4. Susan Dalsass:(206) 654-6279:250:60:50

  5. Archie McNichol:(206) 548-1348:250:100:175

  6. Jody Savage:(206) 548-1278:15:188:150

  7. Guy Quigley:(916) 343-6410:250:100:175

  8. Dan Savage:(406) 298-7744:450:300:275

  9. Nancy McNeil:(206) 548-1278:250:80:75

  10. John Goldenrod:(916) 348-4278:250:100:175

  11. Chet Main:(510) 548-5258:50:95:135

  12. Tom Savage:(408) 926-3456:250:168:200

  13. Elizabeth Stachelin:(916) 440-1763:175:75:300
复制代码
  1. $awk -F'[: ]' '$2~/[a-zA-Z]{4}/{print $0} ' lab3.data
  2. $
复制代码
回复 4# 井蛙夏虫


   

论坛徽章:
0
9 [报告]
发表于 2013-06-22 20:23 |只看该作者
这下对了,原来是这样,谢谢啦!!想了很久。。。一直不知道问题出在哪。。。
回复 7# WilliBhamlll


   

论坛徽章:
0
10
发表于 2013-06-22 20:25
回复 4# 井蛙夏虫
是不是\{\}这个问题应该这么理解,因为外面有了引号,所以这个转义符号就不一不用了,正则表达式如果直接出现在shell的话是需要\{\}来转义?因为{comman}这一说?

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP