找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 83337|回复: 17

[问题求助] 利用sed能提取出文本中的email地址吗?(已解决)

[复制链接]
发表于 2013-7-24 15:07:52 | 显示全部楼层 |阅读模式
请问下,哪位大大能把文本中的email地址提取出来?文本:
Mehak@gmail.com | Facebook
    https://www.facebook.com/pages/Mehakgmailcom/248181861872358?
    Mehak@gmail.com. University. 9 people like this. Want to like this page? Sign up for Facebook to get started. Sign Up. It's free and anyone can join. Already a ...
    Team Drake and Kennedy (drakeandkennedy@gmail.com ...
    https://www.facebook.com/TeamDrakeAndKennedy?
    Team Drake and Kennedy (drakeandkennedy@gmail.com). 1120 likes · 374 talking about this. Drake and Kennedy's journey into this world has been a ...
    Alice.williams.com@gmail.com | Facebook
    https://www.facebook.com/.../Alicewilliamscomgmailcom/31452919192...?
    Alice.williams.com@gmail.com. 7 likes · 0 talking about this.
    sadia22222@gmail.com - Sadia Sabreen Shammee | Facebook
    https://www.facebook.com/permalink.php?story_fbid...id...?
    Flamboyant Nayeem, Jumon Ahmed, Maruf Hasan and 39 others like this. 48 of 355. View previous comments. Muhammad Kashif 03216663232 my number ...
    Macharla.mallikarjun@gmail.com | Facebook
    https://www.facebook.com/Macharlamallikarjungmailcom?
    Macharla.mallikarjun@gmail.com. 4 likes · 0 talking about this.
    HOGER.EVENTOS@GMAIL.COM | Facebook
    https://www.facebook.com/.../HOGEREVENTOSGMAILCOM/2733076...?
    HOGER.EVENTOS@GMAIL.COM. 11 likes · 0 talking about this.
    Abdulwahab@Gmail..com - Local Business | Facebook
    https://www.facebook.com/.../AbdulwahabGmailcom/211068888974266?
    Abdulwahab@Gmail..com. 17 likes · 0 talking about this · 13 checkins.
    www.gmail.com - Photos | Facebook
    https://www.facebook.com/pages/wwwgmailcom/162880424899?sk...?
    www.gmail.com, Las Mercedes, Venezuela. 69204 likes · 998 talking about this.
    Gmail.com | Facebook
    https://www.facebook.com/www.gmail.com.email?
    www.gmail.com - Gmail has become one of the best used web based email service in the world for both personal and professional use. You can access Gmail ...
    Bappa CHI Kheti at Gmail.com | Facebook
    https://www.facebook.com/BappaChiKhetiAtGmailcom?
    Bappa CHI Kheti at Gmail.com. 4 likes · 0 talking about this.

排除 www.gmail.com不要,只要真正的gmail邮箱地址,我看了很长时间的sed了,奈何太菜,一直下不了手啊,谁能帮下多谢多谢.

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2013-7-24 15:20:11 | 显示全部楼层
本帖最后由 Python 于 2013-7-24 15:22 编辑
  1. w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
复制代码
正则是这样的
发表于 2013-7-24 17:21:04 | 显示全部楼层
太复杂了,目测sed无能为力,下面给出vbs解:

  1. Dim objFSO, Rstr, Arr, Wstr
  2. Set objFSO = CreateObject("Scripting.FileSystemObject")
  3. Rstr = objFSO.OpenTextFile("a.txt").ReadAll
  4. Arr = Split(Rstr, vbCrLf)
  5. For Each str In Arr
  6.   If InStr(1, str, "@gmail.com", 1) Then GetMail(str)
  7. Next
  8. objFSO.OpenTextFile("new.txt", 2, True).Write Wstr
  9. Set objFSO = Nothing
  10. CreateObject("Wscript.Shell").Run "cmd /cstart new.txt", True, True

  11. Function GetMail(Str)
  12.   Dim objReg
  13.   Set objReg = New RegExp
  14.   objReg.Global = True
  15.   objReg.IgnoreCase = True
  16.   objReg.Pattern = "[\s]*.*?\(*([^\(]+@gmail.com).*"
  17.   Wstr = Wstr & objReg.Replace(Str, "$1") & vbCrLf
  18. End Function
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2013-7-24 17:42:18 | 显示全部楼层
本帖最后由 CrLf 于 2013-7-24 17:43 编辑

如果不要求只调用一次 sed 的话,还是很简单的
  1. sed "s/[0-9a-zA-Z.@]/\n/g" email.txt | sed "/[0-9a-zA-Z.]{1,100}@\w\w*\.\w\w*$/!d"
复制代码
发表于 2013-7-24 18:11:32 | 显示全部楼层
Abdulwahab@Gmail..com

这里的两个点怎么解释?
发表于 2013-7-24 19:06:04 | 显示全部楼层
大多数脚本语言,处理此类问题的逻辑如下:
1 用findstr,select-string,grep,查找行首是字母,或者行首是空格,后续是任意的,再后续是gmail.com 的行。
对这样的每一行
2 掐头,去掉从行首到空格的内容。
3 去尾,去掉gmail.com 后面的内容。
发表于 2013-7-24 19:39:38 | 显示全部楼层
忽然发现原来每行只有一个地址,那就只需要一个 sed 了
  1. sed "s/^.*\([^0-9a-zA-Z.][0-9a-zA-Z.]{1,100}@\w\w*\.\w\w*\).*$/\1/g" a.txt
复制代码
发表于 2013-7-24 20:42:07 | 显示全部楼层
本帖最后由 terse 于 2013-7-24 20:45 编辑
  1. sed -nr "s/.*[ (](.*@gmail[\.]+com).*/\1/ip" "a.txt"
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2013-7-24 21:04:46 | 显示全部楼层
google mail注册是有特定格式的:

您可以使用字母、数字和英文句点。

输入的字符数应在 6 到 30 之间。
 楼主| 发表于 2013-7-25 12:08:15 | 显示全部楼层
谢谢大家,我有点晕了,需要消化消化.我的环境是xp,想要的效果是这样的:
Mehak@gmail.com
drakeandkennedy@gmail.com
Alice.williams.com@gmail.com
sadia22222@gmail.com
Macharla.mallikarjun@gmail.com
每行一个email地址,去掉重复的.
我也不懂使用sed实现,难不难,感觉可以的,能再看看吗?我还想通过这个事,学习熟悉sed,因为sed应该懂点嘛.
发表于 2013-7-25 14:28:44 | 显示全部楼层
回复 10# wangb70


    下载一个sed.exe放到C:\Windows\system32目录下面,打开cmd窗口,执行他们帮你写的命令。
 楼主| 发表于 2013-7-25 14:34:40 | 显示全部楼层
回复 3# batman
版主好,这个方法可以
还想问问,如何去重复,可以推广应用到其他搜索引擎吗,如yahoo,必应等.
 楼主| 发表于 2013-7-25 14:42:04 | 显示全部楼层
回复 8# terse


    太好了,让我佩服,sed没想到也可以,高兴.

sed能去重复吗?
 楼主| 发表于 2013-7-25 14:45:37 | 显示全部楼层
回复 11# Python


    多谢提醒,我不怕大家笑话,确实是菜鸟,不过,我讨厌自己这么菜,决心慢慢摸索学习.
 楼主| 发表于 2013-7-25 14:49:37 | 显示全部楼层
回复 7# CrLf


    谢谢crlf,不过好象有点问题,是不是我哪里没操作好,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 23:34 , Processed in 0.032583 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表