标题: [问题求助] 利用sed能提取出文本中的email地址吗?(已解决) [打印本页]
作者: wangb70 时间: 2013-7-24 15:07 标题: 利用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]
作者: Python 时间: 2013-7-24 15:20
本帖最后由 Python 于 2013-7-24 15:22 编辑
- w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
复制代码
正则是这样的
作者: batman 时间: 2013-7-24 17:21
太复杂了,目测sed无能为力,下面给出vbs解:- Dim objFSO, Rstr, Arr, Wstr
- Set objFSO = CreateObject("Scripting.FileSystemObject")
- Rstr = objFSO.OpenTextFile("a.txt").ReadAll
- Arr = Split(Rstr, vbCrLf)
- For Each str In Arr
- If InStr(1, str, "@gmail.com", 1) Then GetMail(str)
- Next
- objFSO.OpenTextFile("new.txt", 2, True).Write Wstr
- Set objFSO = Nothing
- CreateObject("Wscript.Shell").Run "cmd /cstart new.txt", True, True
-
- Function GetMail(Str)
- Dim objReg
- Set objReg = New RegExp
- objReg.Global = True
- objReg.IgnoreCase = True
- objReg.Pattern = "[\s]*.*?\(*([^\(]+@gmail.com).*"
- Wstr = Wstr & objReg.Replace(Str, "$1") & vbCrLf
- End Function
复制代码
作者: CrLf 时间: 2013-7-24 17:42
本帖最后由 CrLf 于 2013-7-24 17:43 编辑
如果不要求只调用一次 sed 的话,还是很简单的- sed "s/[0-9a-zA-Z.@]/\n/g" email.txt | sed "/[0-9a-zA-Z.]{1,100}@\w\w*\.\w\w*$/!d"
复制代码
作者: ShadowFiend 时间: 2013-7-24 18:11
[email]Abdulwahab@Gmail..com[/email]
这里的两个点怎么解释?
作者: PowerShell 时间: 2013-7-24 19:06
大多数脚本语言,处理此类问题的逻辑如下:
1 用findstr,select-string,grep,查找行首是字母,或者行首是空格,后续是任意的,再后续是gmail.com 的行。
对这样的每一行
2 掐头,去掉从行首到空格的内容。
3 去尾,去掉gmail.com 后面的内容。
作者: CrLf 时间: 2013-7-24 19:39
忽然发现原来每行只有一个地址,那就只需要一个 sed 了- sed "s/^.*\([^0-9a-zA-Z.][0-9a-zA-Z.]{1,100}@\w\w*\.\w\w*\).*$/\1/g" a.txt
复制代码
作者: terse 时间: 2013-7-24 20:42
本帖最后由 terse 于 2013-7-24 20:45 编辑
- sed -nr "s/.*[ (](.*@gmail[\.]+com).*/\1/ip" "a.txt"
复制代码
作者: Seder 时间: 2013-7-24 21:04
google mail注册是有特定格式的:
您可以使用字母、数字和英文句点。
输入的字符数应在 6 到 30 之间。
作者: wangb70 时间: 2013-7-25 12:08
谢谢大家,我有点晕了,需要消化消化.我的环境是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应该懂点嘛.
作者: Python 时间: 2013-7-25 14:28
回复 10# wangb70
下载一个sed.exe放到C:\Windows\system32目录下面,打开cmd窗口,执行他们帮你写的命令。
作者: wangb70 时间: 2013-7-25 14:34
回复 3# batman
版主好,这个方法可以
还想问问,如何去重复,可以推广应用到其他搜索引擎吗,如yahoo,必应等.
作者: wangb70 时间: 2013-7-25 14:42
回复 8# terse
太好了,让我佩服,sed没想到也可以,高兴.
sed能去重复吗?
作者: wangb70 时间: 2013-7-25 14:45
回复 11# Python
多谢提醒,我不怕大家笑话,确实是菜鸟,不过,我讨厌自己这么菜,决心慢慢摸索学习.
作者: wangb70 时间: 2013-7-25 14:49
回复 7# CrLf
谢谢crlf,不过好象有点问题,是不是我哪里没操作好,
作者: wangb70 时间: 2013-7-25 15:15
回复 2# Python
python好,是不是应该这样的
sed -n "/w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*/p" d:\5.txt
结果有些偏差啊,sed可以去重复嘛?
我自己瞎写的是这样的:
sed "/@gmail/!d" d:\5.txt
不"干净",不是纯粹的email地址,把整行都弄下来了,其实,只需要email地址,别的不要.
请帮我看下下列理解对不对:
sed "/@gmail/!d" 中,一对双引号"",在最外边,把其他的包括起来,一对斜线//,里面放的是匹配的正则,也可能是直接的表达,我不太清楚这一对双引号和一对斜线//是什么意思,如何正确使用,网上sed资料看了不少,还是概念不清楚啊,唉.
作者: Python 时间: 2013-7-25 21:10
回复 16# wangb70
双引号是命令分隔符,告诉sed双引号里面是它需要执行的命令。
这个例子中的斜线里面的内容是用于正则匹配的。
sed1line里面有删除重复行的例子,可以参考一下:
http://bbs.chinaunix.net/thread-336126-1-1.html
作者: wangb70 时间: 2013-7-26 10:36
本帖最后由 wangb70 于 2013-7-26 10:41 编辑
回复 17# Python
看了2遍"抛砖引玉----翻译加注sed1line",我直接找删除重复行的例子,好象没看见啊,是不是它没有直接说明是删除重复行,而要自己变化变化用法?
我再仔细看看.原来在这里:# delete duplicate, consecutive lines from a file (emulates "uniq")
# First line in a set of duplicate lines is kept, rest are deleted.
#删除文件中重复的连续的行(似于"uniq"命令)
#重复行中第一行保留,其他删除
sed '$!N; /^\(.*\)\n\1$/!P; D'
###如果不是最后一行,就把下一行附加在模式空间,然后进行查找操作
###"^"和"$"中间的内容如果有重复就匹配成功.如果匹配不成功就用P打印
###第一行. 然后删除第一行.
# delete duplicate, nonconsecutive lines from a file. Beware not to
# overflow the buffer size of the hold space, or else use GNU sed.
#删除文件中重复的,但不连续的行。注意不要溢出保留空间的缓冲器的大小,
#否则使用GNU sed.
sed -n 'G; s/\n/&&/; /^\([ -~]*\n\).*\n\1/d; s/\n//; h; P'
###在我的linux环境执行不了,出错是sed: -e expression #1, char 34:
###Invalid range end.是不是所谓的溢出保留空间的大小了呢?我也不得而知.
###大家补充吧.!!?????????????????
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |