Sort logs by date field in bash Sort logs by date field in bash bash bash

Sort logs by date field in bash


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.


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;


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

See more details here.