如何用sort命令按月份逆序+日期逆序排序日志行?
日志日期排序问题解决方法
原始日志内容
Oct 29 23:14:39 Oct 30 19:45:15 Oct 31 13:15:19 Nov 1 10:34:15 Nov 2 18:39:20 Nov 3 12:34:59 Nov 4 16:34:59 Nov 5 20:34:59
错误的排序结果
执行sort -r -k2后得到的结果:
Nov 5 Nov 4 Nov 3 Oct 31 Oct 30 Oct 29 Nov 2 Nov 1
期望的排序结果
希望得到按月份逆序(Nov在前、Oct在后),同月份内日期逆序的结果:
Nov 5 Nov 4 Nov 3 Nov 2 Nov 1 Oct 31 Oct 30 Oct 29
正确的排序命令
你需要同时按月份名称逆序和日期数字逆序排序,使用sort的-M(按月份名称排序)、-r(逆序)参数,并指定多关键字段的排序规则:
sort -k1,1Mr -k2,2nr logfile.txt
参数解释
-k1,1Mr:仅对第1个字段(月份)按名称排序(M),并设置逆序(r),1,1限定仅作用于第1个字段,避免干扰后续排序逻辑。-k2,2nr:仅对第2个字段(日期)按数字排序(n),并设置逆序(r),2,2限定仅作用于第2个字段。
执行该命令后,就能得到你期望的排序结果:所有Nov的日志按日期从5到1排列,之后是Oct的日志按日期从31到29排列。
内容的提问来源于stack exchange,提问作者Dennis
相关产品推荐
相关产品推荐

