如何收到电子邮件&不要以所需的域名结尾?

时间:2017-09-04 14:00:02

标签: linux bash grep

我有一个文件emails.txt上的电子邮件列表,我如何收到以@gmail.com结尾的电子邮件,以及以{{1}结尾的电子邮件在两个不同的文件中,使用GREP或类似的东西

对于前。

@gmail.com

我需要两个不同的输出,如:

***emails.txt***
email_1@gmail.com
email_2@gmail.com
email_3@hotmail.com
email_4@example.com

***emails-gmail.txt***
email_1@gmail.com
email_2@gmail.com

3 个答案:

答案 0 :(得分:1)

要获取包含“gmail.com”的电子邮件,请执行以下操作:

cat emails.txt  | grep @gmail.com

要获取不包含'gmail.com'的电子邮件,请执行:

cat emails.txt  | grep -v @gmail.com

答案 1 :(得分:1)

  

这样做工作!!

您只能使用grep,然后将STDOUT重定向到这样的文件:

  • 来自@gmail.com的邮件:

    grep @gmail.com emails.txt > emails-gmail.txt
    
  • 来自@gmail.com

    的邮件
    grep -v @gmail.com emails.txt > emails-other.txt
    

    -v的作用是返回包含@gmail.com的行。

  

上述解决方案没有按预期工作,因为grep使用正则表达式,而在正则表达式中, dot .表示匹配任何字符。我们可以使用替换grep作为fgrepgrep -F,将参数作为文字字符串而不是正则表达式!然后它按预期工作。此外,您可以使用\.转义正则表达式点。然后你可以再做一次

grep @gmail\.com emails.txt > emails-gmail.txt

答案 2 :(得分:1)

正确的方法是:

awk '{print > ("emails-" (/@gmail\.com$/ ? "gmail" : "other") ".txt")}' emails.txt

这将解析您的输入文件一次,生成两个输出文件,并将正确处理其他解决方案到目前为止发布的潜在错误匹配。