#過濾nginx訪問日志
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr -k1 | head -n 10
#過濾ssh登錄失敗日志
grep "Failed password for root from" /var/log/secure | awk {'print $11'} | sort | uniq -c | sort -nr -k1 | head -n 10
輸出結果如下圖:(前面代表次數,后面代表ip)
sort命令詳解:
Linux sort命令用於將文本文件內容加以排序。sort可針對文本文件的內容,以行為單位來排序。
-f :忽略大小寫的差異,例如 A 與 a 視為編碼相同; -b :忽略最前面的空格符部分; -M :以月份的名字來排序,例如 JAN, DEC 等等的排序方法; -n :使用『純數字』進行排序(默認是以文字型態來排序的); -r :反向排序; -u :就是 uniq ,相同的數據中,僅出現一行代表; -t :分隔符,默認是用 [tab] 鍵來分隔; -k :以那個區間 (field) 來進行排序的意思
uniq命令詳解:
uniq命令可以去除排序過的文件中的重復行,因此uniq經常和sort合用。也就是說,為了使uniq起作用,所有的重復行必須是相鄰的。
-i :忽略大小寫字符的不同; -c :進行計數 -u :只顯示唯一的行