ログファイルを解析し、正規表現の逆参照を印刷します。

ログファイルを解析し、正規表現の逆参照を印刷します。

電子メールアドレスを内部および外部に印刷するために解析したい/var/log/maillog(主に構成されたDNS RBLで誤検出をすばやく確認するため)。from=<>to=<>

メールログエントリは次のとおりです(サフィックス)。

Jun 20 17:27:52 foobarserver postfix/smtpd[15925]: NOQUEUE: reject: RCPT from sbr.nouveauquebec.com[184.22.154.110]: 554 5.7.1 Service unavailable; Sender address [[email protected]] blocked using urired.spameatingmonkey.net; Red listed, see http://spameatingmonkey.com/lookup/nouveauquebec.com; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<sbr.nouveauquebec.com>

私の正規表現は

from=<(\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b)> to=<(\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b)>

後で参照できる項目を保存して\1印刷\2したいです。私が望むのは、出力をパイプcat /var/log/maillogし、各行に正規表現を適用し、逆参照を出力することです。

これを達成するための迅速な方法はありますか?

ベストアンサー1

これは単純化された正規表現と貪欲ではない数量子を使用します。

perl -ne 's/^.*from=<(.+?@.+?)> to=<(.+?@.+?)>.*$/$1 $2/; print;' /var/log/maillog

おすすめ記事