awk,第4列在@之前所有匹配的通配符

时间:2013-03-13 13:24:56

标签: awk

我正在尝试从pmta邮件日志中提取数据。

单个条目如下

b,2013-02-04 03:48:57+0200,2013-02-04 03:48:57+0200,noreply@test.com,fynnb@domain.com,rfc822;fynnb@domain.com,failed,5.3.2 (system not accepting network messages),smtp;550 Too many invalid recipients,mx02.domain.com (146.230.128.12),other,smtp,twww01.test.com(10.0.0.53),,143.37.222.256,146.230.128.12,,,virtmail23,,,domain.com/virtmail23,test-promo,,,,,,,,,,,

有很多条目,我想在第3个逗号之后提取“*@test.com”的条目

目前noreply@test.com在示例中,但我们使用noreply,NoReply,No-Reply和用户,所以我想在@符号之前使用通配符。

到目前为止我所拥有的是

awk -F, '$4 == "noreply@test.com"' /home/mail/test.csv

适用于提取包含“noreply@test.com”的条目,但如果我使用

awk -F, '$4 == "*@test.com"' /home/mail/test.csv

我没有数据。 在这个场景中,我可以在awk中使用*?

1 个答案:

答案 0 :(得分:8)

你需要告诉awk进行RE比较(〜)而不是字符串比较(==):

awk -F, '$4 ~ /@test\.com/' /home/mail/test.csv