如何使用unix排序对MM-DD-YYYY日期进行排序?

时间:2015-03-04 17:15:16

标签: sorting unix

有无

01-01-2016
08-01-2015
09-05-2015

08-01-2015
09-05-2015
01-01-2016

有没有办法在unix上对此执行排序操作?我正在使用这个命令,而且我正在使用" HAVE"结果:

sort file

2 个答案:

答案 0 :(得分:1)

您编辑了问题,将输入日期表示从MM-DD-YY(仍然是标题所示)更改为MM-DD-YYYY

我认为这意味着格式在您的控制之下。如果是这样,最佳解决方案是使用标准ISO 8601格式YYYY-MM-DD。它可以直接排序它是明确的; 2015-03-04始终是3月4日,而不是4月3日。

如果您仍然使用MM-DD-YYMM-DD-YYYY格式,则另一种解决方案是使用sed对文件进行预处理,将其翻译为YYYY-MM-DD,然后执行一个简单的sort,然后将其翻译回所需的格式。这可能不如SMA's answer那么有效,但我个人觉得它更清楚(我从来没有完全弄清楚sort命令的字段规范语法)。

答案 1 :(得分:0)

使用-n选项进行排序,以数字方式排序:

sort -n -k 1.8 -k 1.7 -k 1.5 -k 1.4 -k 1.2 -k 1.1 file