免费注册 查看新帖 |

Chinaunix

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

请教高手:grep 用法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-04-10 13:49 |只看该作者 |倒序浏览
如果有一行字符串$line = '我的email是23895789@qq.com,请联系我',如何把其中的邮件地址打印出来,打印的格式是:
23895789@qq.com 23895789
即:username@xx.com username 的格式
需要注意的是,字符串里面可能有很多email,需要全部打印出来,就是说要匹配邮件地址,然后打印出来,不知道我说清楚了没,真心请教大侠,结草衔环,感激不尽!

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
2 [报告]
发表于 2012-04-10 14:13 |只看该作者
回复 1# rabble_1

# grep can't do that
$ echo '我的email是23895789@qq.com,请联系我' | grep -oP "(?<=是)[^,]+(?=,)"
23895789@qq.com

$ echo '我的email是23895789@qq.com,请联系我' | awk -F"[是,@]" '{print $2"@"$3,$2}'
'
23895789@qq.com 23895789
   

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
3 [报告]
发表于 2012-04-10 14:22 |只看该作者
本帖最后由 yinyuemi 于 2012-04-10 14:23 编辑
  1. echo $line
  2. 我的email是23895789@qq.com,23895789@qq.com,23895789@qq.com,请联系我

  3. perl -lne '/([\w]+)@[\w.]+(*SKIP)(?{print "$& $1 "})(*FAIL)/' <<<$line
  4. 23895789@qq.com 23895789
  5. 23895789@qq.com 23895789
  6. 23895789@qq.com 23895789
复制代码

论坛徽章:
0
4 [报告]
发表于 2012-04-10 19:56 |只看该作者
  1. echo $line | sed -rn 's/[^0-9]*([0-9]+)(@[^,]*),.*/\1\2 \1/p'
复制代码

论坛徽章:
0
5 [报告]
发表于 2012-04-10 21:00 |只看该作者
本帖最后由 fuliangcheng 于 2012-04-10 21:17 编辑

第一种方法:awk -F"是" '{p=$2}{print p}'  file | awk -F"," '{q=$0}{print q}' $p | awk -F"," '{q=$1}{print $1}' | awk -F"@" '{print $q","$1}'
第二种方法:awk '{p=substr($1,15,15)}{q=substr($1,15,}{print p","q}' file



cat file
我的email是23895789@qq.com,请联系我
我的email是23895789@qq.com,请联系我
我的email是23895789@qq.com,请联系我
我的email是23895789@qq.com,请联系我

result:

23895789@qq.com,23895789
23895789@qq.com,23895789
23895789@qq.com,23895789
23895789@qq.com,23895789

论坛徽章:
1
辰龙
日期:2014-05-22 11:38:58
6 [报告]
发表于 2012-04-10 21:22 |只看该作者
本帖最后由 winway1988 于 2012-04-10 21:28 编辑
  1. echo "$line" | sed -r 'G;G;:a;s/([0-9]+)(@[a-z.]+)([^\n]*\n\n)/\3\n\1\2 \1/;ta;s/^[^\n]*\n*//;'
复制代码
  1. echo "$line" | awk -vRS="[0-9]+@[a-z.]+" 'RT{split(RT,a,"@");print RT,a[1]}'
复制代码

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
7 [报告]
发表于 2012-04-11 15:08 |只看该作者
本帖最后由 mcshell 于 2012-04-11 15:22 编辑
  1. [root@234267 mcshell]# perl -lne 'if(/(([a-zA-Z0-9._%+-]+)@\S+?(?=[,]))/){print "$1\t$2"}' tmp
  2. 23895789@qq.com 23895789
  3. 23895789@vip.sina.com   23895789
  4. abc@qq.com      abc
  5. [root@234267 mcshell]# cat tmp
  6. 我的email是23895789@qq.com,请联系我'
  7. 我的email是23895789@vip.sina.com,请联系我'
  8. 我的email是abc@qq.com,请联系我'
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP