昨天我在這裏問了一個關於oneliner和mjschultz的問題,給了我一個答案,我立即愛上了:) Awk剛剛銷燬了手頭的任務,解析了一個大日誌文件(500+ MB)在幾秒鐘內。現在我試圖將我的其他線索移植到awk上。awk從maillog解析唯一IP地址
這是一個問題:
grep "pop3\[" maillog | grep "User logged in" |
egrep -o '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}' | sort -u
我需要使用POP3所有唯一的IP地址列表連接到郵件服務器。
這是一個示例日誌條目:
Nov 15 00:49:21 hostname pop3[19418]: login: [10.10.10.10] username plaintext
User logged in
所以我找到含有「POP3」的所有線條和我分析他們部分「登錄的用戶」。接下來,我使用egrep和一個正則表達式來匹配IP地址,我使用排序來過濾出重複地址。
這是我到目前爲止有我的awk的版本:
awk '/pop3\[.*.User logged in/ {ip[$7]=0} END {for (address in ip)
{ print address} }' maillog
這完美的作品,但因爲始終不是所有的日誌條目是相同的,例如有時IP被移動到了8場喜歡這裏:
Nov 15 10:42:40 hostname pop3[2232]: login: hostname.domain.com [20.20.20.20]
username plaintext User logged in
用awk捕捉這些條目的最佳方法是什麼?
一如既往感謝事先所有偉大的迴應,你教我這麼多已經:)
完美的代碼!正是我所需要的,並且感謝ideone,直到現在,從來沒有見過該網站,這正在我的書籤工具欄儘快。 – f10bit 2010-11-17 00:55:57