如何对日期进行排序并在unix中打印排序数据?

时间:2016-06-27 09:37:46

标签: sorting date unix sed

我有一个日志文件,我想对其中的数据进行排序,并在指定的startime和endtime之间打印数据。

Logfile:
[10/04/16 02:07:20  BST] Data 1
[11/04/16 02:07:20  BST] Data 1
[10/05/16 04:11:09  BST] Data 2
[12/05/16 04:11:09  BST] Data 2
[11/06/16 06:22:35  BST] Data 3
[12/06/16 06:22:35  BST] Data 3
[11/07/16 11:07:30  BST] Data 3
[12/08/16 09:08:07  BST] Data 4
[22/08/16 09:08:07  BST] Data 4

我正在使用以下命令。

sort -n -k 1.5 -k 1.3 -k 1 logfile | sed -n "/[10/04/16 02:07:20  BST]/,/[12/05/16 04:11:09  BST]/p";

但它正在显示文件中的所有数据。但我想在我提到的结束时间停止它。有没有更好的办法? 在此先感谢。

1 个答案:

答案 0 :(得分:1)

您必须转义括号以及日期部分中的斜杠。试试这个(适用于我的笔记本电脑):

sort -n -k 1.5 -k 1.3 -k 1 logfile | sed -n "/\[10\/04\/16 02:07:20  BST\]/,/\[12\/05\/16 04:11:09  BST\]/p"

输出:

[10/04/16 02:07:20  BST] Data 1  
[11/04/16 02:07:20  BST] Data 1  
[10/05/16 04:11:09  BST] Data 2  
[12/05/16 04:11:09  BST] Data 2