Hei*_*js7 3 sed text-processing
我有以下 emails.txt:
tsar@gmail.com
c2m_@hotmail.com.es
c72@hotmail.com.es.com;es
m7_@hotmail.es.com
cm_@hotmail.com
@pepito.com
Run Code Online (Sandbox Code Playgroud)
和一个 sed 命令来获取
sed -n -r '/\w+@\w+\.\w+((\.\w+)*)?/p' emails.txt
tsar@gmail.com
cm_@hotmail.com
Run Code Online (Sandbox Code Playgroud)
但是,它一直显示包含多个 .com 的电子邮件
我不想要这些电子邮件:
c2m_@hotmail.com.es
c72@hotmail.com.es.com;es
m7_@hotmail.es.com
@pepito.com
Run Code Online (Sandbox Code Playgroud)
我被困在这里,我不知道如何获得它。
使用sed,您可以执行以下操作:
$ sed -nr '/^[^@]+@[^.]+\.com\s*$/p' file
tsar@gmail.com
cm_@hotmail.com
Run Code Online (Sandbox Code Playgroud)
正则表达式@在行首查找一个或多个非字符,然后是 a @,然后是一个或多个非.字符.com,然后是 0 或多个空格。
其他选择:
珀尔
perl -ne 'print if /^[^@]+@[^.]+\.com\s*$/' file
Run Code Online (Sandbox Code Playgroud)GNU grep
grep -P '^[^@]+@[^.]+\.com\s*$' file
Run Code Online (Sandbox Code Playgroud)POSIX grep
grep -E '^[^@]+@[^.]+\.com\s*$' file
Run Code Online (Sandbox Code Playgroud)awk
awk '$0~/^[^@]+@[^.]+\.com\s*$/' file
Run Code Online (Sandbox Code Playgroud)我会使用这样的东西:
sed -n -r '/\w+@\w+\.com$/p' emails.txt
tsar@gmail.com
cm_@hotmail.com
Run Code Online (Sandbox Code Playgroud)
它将以格式检索每封电子邮件 user@xxx.com
如果你需要更多的东西“通用”不仅.com也.fr或者.uk你可以使用:
sed -n -r '/\w+@\w+\.\w+$/p' emails.txt
Run Code Online (Sandbox Code Playgroud)
这将以格式检索每封电子邮件 user@xxx.xxx