2013-03-13 62 views
1

我試圖從pmta郵件日誌中提取數據。awk,第4列所有匹配通配符之前的@

一個條目的外觀如下

b,2013-02-04 03:48:57+0200,2013-02-04 03:48:57+0200,[email protected],[email protected],rfc822;[email protected],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,,,,,,,,,,, 

有很多項,我只是想拉出來的條目有「*@test.com」第三逗號後

目前noreply @ test.com是在這個例子中,但我們使用noreply,NoReply,No-Reply和用戶,所以我想在@符號前使用通配符。

我有什麼到目前爲止

awk -F, '$4 == "[email protected]"' /home/mail/test.csv 

效果很好拔出含有「[email protected]」條目,但如果我用

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

我沒有得到任何數據。 在這個senario的awk中,我可以用什麼*?

+0

「\ *」的意思是「前述RE子組的零次或多個重複「在RE中使用後,但在RE開始時使用時,它表示文字」\ *「字符。你可能是指「。\ * @ test.com」(其中「。\ *」表示任意字符的零次或多次重複),但如果你仔細想一想,那和「@ test.com」是一樣的。 – 2013-03-13 13:32:21

回答

6

你需要告訴AWK做一個比較RE(〜)而不是字符串比較(==):

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

輝煌的作品完美。謝謝您的回覆 – rezizter 2013-03-13 13:38:19