3

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、およびuserを使用しているため、@記号の前にワイルドカードを使用します。

私が今まで持っているのは

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

これは「noreply@test.com」を含むエントリを引き出すのにうまく機能しますが、

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

データがありません。このシナリオのawkで*に何を使用できますか?

4

1 に答える 1

8

文字列比較(==)の代わりにRE比較(〜)を実行するようにawkに指示する必要があります。

awk -F, '$4 ~ /@test\.com/' /home/mail/test.csv
于 2013-03-13T13:28:51.267 に答える