如何在文件中按自定义日期排序?

时间:2015-02-10 08:57:48

标签: bash sorting

我有这样的日志文件:

Fri Jan 30 13:52:57 2015 1 10.1.1.1 0 /home/test1/MAIL_201401301353.201501301352.19721.sqlLdr b _ i r test1 ftp 0 * c
Fri Jan 30 13:52:58 2015 1 10.1.1.1 0 /home/test2/MAIL_201401301354.201501301352.12848.sqlLdr b _ i r test2 ftp 0 * c
Fri Jan 30 13:53:26 2015 1 10.1.1.1 0 /home/test3/MAIL_201401301352.201501301353.17772.sqlLdr b _ i r test3 ftp 0 * c

我需要按日期值排序。日期值是2014年的第一个......

我可以找到这样的日期值:

echo $log | awk '{print $9}' | grep -oP '(?<!\d)201\d{9}' | head -n 1

如何按此日期值排序(新旧)?

1 个答案:

答案 0 :(得分:2)

要对此文件进行排序,您可以使用:

sort -t_ -nk2,2 file
Fri Jan 30 13:53:26 2015 1 10.1.1.1 0 /home/test3/MAIL_201401301352.201501301353.17772.sqlLdr b _ i r test3 ftp 0 * c
Fri Jan 30 13:52:57 2015 1 10.1.1.1 0 /home/test1/MAIL_201401301353.201501301352.19721.sqlLdr b _ i r test1 ftp 0 * c
Fri Jan 30 13:52:58 2015 1 10.1.1.1 0 /home/test2/MAIL_201401301354.201501301352.12848.sqlLdr b _ i r test2 ftp 0 * c

<强>详细信息:

-n      # numerical sort
-t      # set field separator as _
-k2,2   # sort on 2nd field