此问题在此处已有答案:
Sorting date field in unix(5个答案)
昨天就关门了。
我试图根据日期和时间对这两行进行反向排序,我使用了下面的命令,它工作正常,但不考虑AM和PM,因此下面的两行没有正确排序,因为第一行的时间是10 AM,而第二行是2 PM
指挥官:
sort -t',' -k2,2 -k7,7r file.csv
字符串
线条:
排序前:
field1,field2,field3,field4,field5,field6,19-NOV-23 10.58.03.000000 AM
field1,field2,field3,field4,field5,field6,19-NOV-23 02.48.47.000000 PM
型
排序后的行(相同排列)
field1,field2,field3,field4,field5,field6,19-NOV-23 10.58.03.000000 AM
field1,field2,field3,field4,field5,field6,19-NOV-23 02.48.47.000000 PM
型
2条答案
按热度按时间b4lqfgs41#
man sort
(GNU排序):字符串
数据中的字段7:
型
首先定义反向(或在OPTS),字段分隔符和年份(字段7,位置8和9,数字):
型
然后是月份(GNU排序中的M排序选项):
型
然后是当天和AM/PM(实际上是A/P):
型
然后是时间的一部分(用于锻炼)。
上面你得到:
型
c9qzyr3d2#
Decorate-Sort-Undecorate习惯用法适用于任何awk、任何sort和任何cut:
字符串
型
如果你不确定这是如何工作的,请查看
awk
命令的输出,该命令在cut
(undecorates)再次删除它之前,将密钥时间戳添加到(装饰)sort
的输入上:型
注意它会按照所需的顺序进行排序。