![使用 grep 从文件中获取电子邮件地址,正则表达式不起作用?](https://linux22.com/image/141510/%E4%BD%BF%E7%94%A8%20grep%20%E4%BB%8E%E6%96%87%E4%BB%B6%E4%B8%AD%E8%8E%B7%E5%8F%96%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E5%9C%B0%E5%9D%80%EF%BC%8C%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
所以我有一个包含这样的电子邮件的文件:
[email protected]:theirUsername
[email protected]:theirUsername
...
我想提取以 PA 开头的电子邮件,然后是 6 个随机字符,然后是 @gmail.com,之后是:他们的用户名,这对我来说用户名是什么并不重要。
我尝试使用这个:
egrep "^PA[a-zA-Z0-9-.+_]{6}@gmail.com:[a-zA-Z0-9-.+_]+"
我用 grep 尝试过,但仍然不起作用,但它不起作用?我已经很长时间没有将正则表达式与egrep一起使用了,阅读手册也没有帮助,我在这里做错了什么?正确的输入方法是什么?
答案1
如果您真的只想要“6 个随机字符”并且不关心后面的内容,:
那么您可以轻松简化。:
根本不要尝试匹配 the 之后的内容,只需使用 a.
来表示 PA 之后的字符
egrep '^PA.{6}@gmail.com:'
例如
% cat f
hello
[email protected]:jgkfd
[email protected]
[email protected]:
% egrep '^PA.{6}@gmail.com:' f
[email protected]:jgkfd