regex - 从文本文件中提取电子邮件

标签 regex linux grep debian

我尝试使用以下方法从文本文件中提取电子邮件:

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_-]+@[0-9a-zA-Z_.-]+\.[a-zA-Z]+' infile > outfile.txt

您的引用看起来也很可疑,我也已经改变了。

关于regex - 从文本文件中提取电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26281370/

相关文章:

linux - 我如何知道 Linux 中的下一个设备映射器?

linux - grep 模式匹配后仅包含一个单词的行(忽略空格)

java - Matcher.find() 如何工作

c++ - 在 C++ 中使用正则表达式查找 [/和 ] 之间的数字

c - 为什么 pclose(3) 不等待 shell 命令终止

linux - 如何通过 Linux 脚本替换文件中的数字?

c# - 正则表达式替换特定控制字符,除了一些特殊情况 C#?

java - 需要查找包含其他标签的 HTML pre 标签

redirect - 同时管道到 grep 并重定向到 stdout

bash - bash 脚本中的 grep + Jenkins