我正在尝试从FileZilla日志中提取用户名和他们登录的IP地址列表。
(000099) 11/29/2013 9:20:26 AM - user_one (145.194.40.65)> 230 Logged on
我已经获得了所有拥有有效登录名的IP列表:
cat FileZilla\ Server.log | grep "Logged on" | awk '{match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/); ip = substr($0,RSTART,RLENGTH); print ip}' | sort | uniq -c
但是如何匹配用户名和IP地址?因此,完成后输出看起来像这样:
5 user_one 10.1.1.1
3 user_one 10.5.1.1
2 user_two 10.1.1.1
3 user_two 10.8.8.8
我花了几个小时在这一个,所以任何提示或技巧将不胜感激。
答案 0 :(得分:0)
您可以尝试以下命令:
gawk -f a.awk FileZilla\ Server.log
其中a.awk
是:
/Logged on/{
match($0,/[0-9]?[0-9]:[0-9][0-9]:[0-9][0-9] .. . ([^ ]*) \(([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)\)/,a)
b[(a[1]" "a[2])]++
}
END {
for (i in b) {
print b[i], i
}
}
如果要对结果进行排序,可以使用PROCINFO["sorted_in"]
作为
END {
PROCINFO["sorted_in"]="@ind_str_asc"
for (i in b) {
print b[i], i
}
}