Sort logs by date field in bash

后端 未结 4 1953
我寻月下人不归
我寻月下人不归 2020-12-05 04:43

let\'s have

126 Mar  8 07:45:09 nod1 /sbin/ccccilio[12712]: INFO: sadasdasdas
  2 Mar  9 08:16:22 nod1 /sbin/zzzzo[12712]: sadsdasdas
  1 Mar  8 17:20:01 no         


        
相关标签:
4条回答
  • 2020-12-05 05:18

    For GNU sort: sort -k2M -k3n -k4

    • -k2M sorts by second column by month (this way "March" comes before "April")
    • -k3n sorts by third column in numeric mode (so that " 9" comes before "10")
    • -k4 sorts by the fourth column.

    See more details in the manual.

    0 讨论(0)
  • 2020-12-05 05:22

    little off-topic - but anyway. only useful when working within filetrees

    ls -l -r --sort=time
    

    from this you could create a one-liner which for example deletes the oldest backup in town.

    ls -l -r --sort=time | grep backup | head -n1 | while read line; do oldbackup=\`echo $line | awk '{print$8}'\`; rm $oldbackup; done;
    
    0 讨论(0)
  • 2020-12-05 05:22

    You can use the sort command:

    cat $logfile | sort -M -k 2
    

    That means: Sort by month (-M) beginning from second column (-k 2).

    0 讨论(0)
  • days need numeric (not lexical) sort, so it should be sort -s -k 2M -k 3n -k 4,4

    See more details here.

    0 讨论(0)
提交回复
热议问题