提取电子邮件
问题描述:
我尝试从文本文件中提取电子邮件:提取电子邮件
grep -o ‘[0-9a-zA-Z-_]*@[0-9a-zA-Z-_.]*.[a-zA-Z]*’ infile > outfile.txt
但是,结果是:
grep: Invalid range end
我不知道为什么......
有人可以帮忙吗? 谢谢
答
连字符需要是字符类中的第一个或最后一个字符以避免转义。如果连字号出现在中间,那么它被认为是一个范围。
试试这个grep的:
grep -oE '[0-9a-zA-Z_-][email protected][0-9a-zA-Z_.-]+\.[a-zA-Z]+' infile > outfile.txt
而且您的报价看起来很可疑,我已经改变了。
这里有无效范围:'Z-_'。你需要逃避破折号:'Z \ -'。此外,点“。”在正则表达式中是“全部匹配”字符。我想你想从字面上匹配它,所以你也需要逃避它。 – tiguchi 2014-10-09 14:52:01