Grep寻找适合一个参数而不是另一个参数的东西

时间:2017-09-20 06:00:13

标签: grep

在我的数据集中,我们需要解析大量电子邮件(以及电话号码和地址等无数其他无关信息。)

我正在尝试寻找符合电子邮件条件的内容,但没有正确的电子邮件格式。所以,我尝试使用grep的“AND”函数,它符合第二个参数,但不符合第一个参数。

grep -E -c -v "^[a-mA-M][a-zA-Z]*\.@[A-Za-z]+\.[A-Za-z]{2,6}"Data.bash | grep @ Data.bash

我应该如何实施?因为这只是在其中找到任何带有@的东西(因为第一个参数返回0而第二个参数只是找到了@中的所有内容)。

简而言之,我如何和grep中的两个条件一起?

编辑:示例数据

电子邮件地址具有用户ID,域名可以包含字母,数字, 期间和破折号。

Matches:
saltypickle@gmail.com
saltypickle@g-mail.com

No Match:
saltypickle@g^mail.com
saltypickle@.
@saltyPickle@
saltyPickle@

1 个答案:

答案 0 :(得分:0)

grep -P '^\w+@[[:alnum:]-.]+.com' inputfile
saltypickle@gmail.com
saltypickle@g-mail.com

这将允许任何字母,数字,-.作为域名。

以下将打印无效的电子邮件地址:

grep -vP '^\w+@[[:alnum:]-.]+.com' inputfile
saltypickle@g^mail.com
saltypickle@.
@saltyPickle@
saltyPickle@