按秒和分钟排序

时间:2017-11-23 13:28:07

标签: bash

我有一个很长的未排序日志来自许多来源,它的每一行都有它写入的时间。 我想按时间排序日志,问题是没有约定在哪里写时间在行,所以我没有任何模式基于分隔符或我可以过滤的行中的位置。 我唯一知道的是时间格式:hh:mm:ss。  例如:

  

文件名时间

     

时间

     

文件名日期时间

     

文件名例外日期时间

     

...

我如何使用这种格式对文件进行排序 - 即使我不知道该行的确切位置? 我需要能够按小时,分钟和秒钟疼痛

1 个答案:

答案 0 :(得分:2)

您可以使用sed提取时间(格式为 hh:mm:ss ),将其添加到行首,然后使用此新字段进行排序,然后用切割再次将其移除,如:

sed 's/\(.*\)\([0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}\)/\2\t\1\2/' data|
sort -t: -k3,3|cut -f2-

(这将按秒排序,将其更改为-k2,2或-k1,1以按分钟或小时排序)