按ID列和日期列排序(MM / DD / YYYY)

时间:2015-09-29 13:26:30

标签: bash sorting unix

我正在尝试按ID列和日期列对.txt文件进行排序,但是日期排序部分无法正常工作。

数据:

|855986|03/01/1980|100|
|855986|06/01/1979|120|
|868566|01/01/1999|560|
|855986|05/01/2015|856|
|868566|09/01/2000|560|

我需要输出的内容如下:

|855986|06/01/1979|120|
|855986|03/01/1980|100|
|855986|05/01/2015|856|
|868566|01/01/1999|560|
|868566|09/01/2000|560|

这是我当前的代码,它正确地对ID和月份进行排序,但似乎忽略了日期的年份部分:

sort -t '|' -k 1 -b -k 2.7,2.10 -k 2.1,2.2 file.txt

1 个答案:

答案 0 :(得分:3)

你非常接近。但是,日期字段实际上是字段#3,因为|是每行中的第一个字符。

您可以使用:

sort -b -t '|' -k 3.7,3.10 -k 3.4,3.5 -k 3.1,3.2 file
|855986|06/01/1979|120|
|855986|03/01/1980|100|
|868566|01/01/1999|560|
|868566|09/01/2000|560|
|855986|05/01/2015|856|