[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

请问下,哪位大大能把文本中的email地址提取出来?文本:
[email]Mehak@gmail.com[/email] | Facebook
    https://www.facebook.com/pages/Mehakgmailcom/248181861872358?
    [email]Mehak@gmail.com[/email]. 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 ([email]drakeandkennedy@gmail.com[/email] ...
    https://www.facebook.com/TeamDrakeAndKennedy?
    Team Drake and Kennedy ([email]drakeandkennedy@gmail.com[/email]). 1120 likes · 374 talking about this. Drake and Kennedy's journey into this world has been a ...
    [email]Alice.williams.com@gmail.com[/email] | Facebook
    https://www.facebook.com/.../Alicewilliamscomgmailcom/31452919192...?
    [email]Alice.williams.com@gmail.com[/email]. 7 likes · 0 talking about this.
    [email]sadia22222@gmail.com[/email] - 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 ...
    [email]Macharla.mallikarjun@gmail.com[/email] | Facebook
    https://www.facebook.com/Macharlamallikarjungmailcom?
    [email]Macharla.mallikarjun@gmail.com[/email]. 4 likes · 0 talking about this.
    [email]HOGER.EVENTOS@GMAIL.COM[/email] | Facebook
    https://www.facebook.com/.../HOGEREVENTOSGMAILCOM/2733076...?
    [email]HOGER.EVENTOS@GMAIL.COM[/email]. 11 likes · 0 talking about this.
    [email]Abdulwahab@Gmail..com[/email] - Local Business | Facebook
    https://www.facebook.com/.../AbdulwahabGmailcom/211068888974266?
    [email]Abdulwahab@Gmail..com[/email]. 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了,奈何太菜,一直下不了手啊,谁能帮下多谢多谢.[attach]6597[/attach]
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 Python 于 2013-7-24 15:22 编辑
  1. w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
复制代码
正则是这样的

TOP

太复杂了,目测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

评分人数

***共同提高***

TOP

本帖最后由 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"
复制代码

TOP

[email]Abdulwahab@Gmail..com[/email]

这里的两个点怎么解释?
nevermore

TOP

大多数脚本语言,处理此类问题的逻辑如下:
1 用findstr,select-string,grep,查找行首是字母,或者行首是空格,后续是任意的,再后续是gmail.com 的行。
对这样的每一行
2 掐头,去掉从行首到空格的内容。
3 去尾,去掉gmail.com 后面的内容。
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

忽然发现原来每行只有一个地址,那就只需要一个 sed 了
  1. sed "s/^.*\([^0-9a-zA-Z.][0-9a-zA-Z.]{1,100}@\w\w*\.\w\w*\).*$/\1/g" a.txt
复制代码

TOP

本帖最后由 terse 于 2013-7-24 20:45 编辑
  1. sed -nr "s/.*[ (](.*@gmail[\.]+com).*/\1/ip" "a.txt"
复制代码
1

评分人数

TOP

google mail注册是有特定格式的:

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

输入的字符数应在 6 到 30 之间。

TOP

谢谢大家,我有点晕了,需要消化消化.我的环境是xp,想要的效果是这样的:
[email]Mehak@gmail.com[/email]
[email]drakeandkennedy@gmail.com[/email]
[email]Alice.williams.com@gmail.com[/email]
[email]sadia22222@gmail.com[/email]
[email]Macharla.mallikarjun@gmail.com[/email]
每行一个email地址,去掉重复的.
我也不懂使用sed实现,难不难,感觉可以的,能再看看吗?我还想通过这个事,学习熟悉sed,因为sed应该懂点嘛.

TOP

回复 10# wangb70


    下载一个sed.exe放到C:\Windows\system32目录下面,打开cmd窗口,执行他们帮你写的命令。

TOP

回复 3# batman
版主好,这个方法可以
还想问问,如何去重复,可以推广应用到其他搜索引擎吗,如yahoo,必应等.

TOP

回复 8# terse


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

sed能去重复吗?

TOP

回复 11# Python


    多谢提醒,我不怕大家笑话,确实是菜鸟,不过,我讨厌自己这么菜,决心慢慢摸索学习.

TOP

回复 7# CrLf


    谢谢crlf,不过好象有点问题,是不是我哪里没操作好,

TOP

返回列表