【发布时间】:2015-04-17 15:32:30
【问题描述】:
我有一个像这样有很多行的输入平面文件:
Apr 3 13:30:02 aag8-ca-acs01-en2 CisACS_01_PassedAuth p1n5ut5s 1 0 Message-Type=Authen OK,User-Name=joe7@it.test.com,NAS- IP-Address=4.196.63.55,Caller-ID=az-4d-31-89-92-90,EAP Type=17,EAP Type Name=LEAP,Response Time=0,
Apr 3 13:30:02 aag8-ca-acs01-en2 CisACS_01_PassedAuth p1n6ut5s 1 0 Message-Type=Authen OK,User-Name=bobe@jg.test.com,NAS-IP-Address=4.197.43.55,Caller-ID=az-4d-4q-x8-92-80,EAP Type=17,EAP Type Name=LEAP,Response Time=0,
Apr 3 13:30:02 abg8-ca-acs01-en2 CisACS_01_PassedAuth p1n4ut5s 1 0 Message-Type=Authen OK,User-Name=jerry777@it.test.com,NAS-IP-Address=7.196.63.55,Caller-ID=az-4d-n6-4e-y2-90,EAP Type=17,EAP Type Name=LEAP,Response Time=0,
Apr 3 13:30:02 aca8-ca-acs01-en2 CisACS_01_PassedAuth p1n4ut5s 1 0 Message-Type=Authen OK,User-Name=frc777o.@it.test.com,NAS-IP-Address=4.196.263.55,Caller-ID=a4-4e-31-99-92-90,EAP Type=17,EAP Type Name=LEAP,Response Time=0,
Apr 3 13:30:02 aag8-ca-acs01-en2 CisACS_01_PassedAuth p1n4ut5s 1 0 Message-Type=Authen OK,User-Name=frc77@xed.test.com,NAS-IP-Address=4.136.163.55,Caller-ID=az-4d-4w-b5-s2-90,EAP Type=17,EAP Type Name=LEAP,Response Time=0,
我正在尝试 grep 输入文件中的电子邮件地址,以查看它们是否已存在于主文件中。
主平面文件如下所示:
a44e31999290;frc777o.@it.test.com;20150403
az4d4qx89280;bobe@jg.test.com;20150403
0dbgd0fed04t;rrfuf@us.test.com;20150403
28cbe9191d53;rttuu4en@us.test.com;20150403
az4d4wb5s290;frc77@xed.test.com;20150403
d89695174805;ccis6n@cn.test.com;20150403
如果邮件在 master 中不存在,我想要一个简单的计数。
所以使用我希望看到的示例:count=3,因为 bobe@jg.test.com 和 frc77@xed.test.com 已经存在于 master 中,而其他的则不存在。
我尝试了各种 grep 组合,例如下面来自上次测试的示例,但它不起作用。我在 perl 脚本中使用 grep 来首先捕获电子邮件,然后计算它们,但我真正需要的是来自的电子邮件计数主文件中不存在的输入文件。
grep -o -P '(?<=User-Name=\).*(?=,NAS-IP-)' $infile $mstr > $new_emails;
任何帮助将不胜感激,谢谢。
【问题讨论】:
标签: perl grep pattern-matching