我有几个Apache日志文件,它们被附加在一起,我需要按日期对它们排序。它们的格式如下:
"www.company.com" 192.168.1.1 [01/Jan/2011:00:04:17 +0000] "GET /foobar/servlet/partner/search/results?catID=1158395&country=10190&id=5848716&order_by=N-T&order_by_dir=-&product=10361996&siteID=1169823&state= HTTP/1.1" 200 10459 0 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
在Linux命令行上执行此操作的最佳方法是什么?
5条答案
按热度按时间pvcm50d11#
t40tm48m2#
这几乎是微不足道的指出,但 * 只是 * 以防它混淆任何人:从技术上讲,grm的答案应该使用字段#3,而不是4,以匹配提问者的确切日志格式。也就是说,它应该是:
他的答案在其他方面都是正确的,并且可以按原样用于通用日志格式。
0pizxfdo3#
当日志行可能包含多个IP地址(由,'分隔)时,使用' '作为字段分隔符失败
尝试使用
pkmbmrz74#
尝试Super Speedy Syslog Searcher
(假设您有rust installed)
然后
ebdffaop5#
我通过浏览“Linux命令行”这本书、手册页和试错法,从在线示例中了解到了这一点:
B与n或M沿着将停止排序阅读没有意义的字符,例如/和:这使得当空格已经被用作分隔符而您仍然必须用:、/和/或任何其他您希望在排序时使用的字符来分隔时的工作更加容易。
上面的脚本将首先按年排序,然后按月排序,最后按日期排序。