我有一个包含数十万条记录的文本文件。其中一个字段是日期字段。 有什么方法可以根据日期字段对文件进行排序吗?
09-APR-12 04.08.43.632279000 AM
19-MAR-12 03.53.38.189606000 PM
19-MAR-12 03.56.27.933365000 PM
19-MAR-12 04.00.13.387316000 PM
19-MAR-12 04.04.45.168361000 PM
19-MAR-12 03.54.32.595348000 PM
27-MAR-12 10.28.14.797580000 AM
28-MAR-12 12.28.02.652969000 AM
27-MAR-12 07.28.02.828746000 PM
输出应该是
19-MAR-12 03.53.38.189606000 PM
19-MAR-12 03.54.32.595348000 PM
19-MAR-12 03.56.27.933365000 PM
19-MAR-12 04.00.13.387316000 PM
19-MAR-12 04.04.45.168361000 PM
27-MAR-12 10.28.14.797580000 AM
27-MAR-12 07.28.02.828746000 PM
28-MAR-12 12.28.02.652969000 AM
09-APR-12 04.08.43.632279000 AM
我已尝试使用 sort 命令对日期进行排序(将日期字段作为字符串),但它没有给出正确的输出。
最佳答案
Chronicle 的解决方案很接近,但遗漏了上午/下午的区别,将 27-MAR-12 07.28.02.828746000 PM
排在 27-MAR-12 10.28.14.797580000 AM
之前.这可以修改:
sort -t- -k 3.1,3.2 -k 2M -k 1n -k 3.23,3.24
但这仍然很脆弱。将日期转换为纪元时间并进行数值比较会好得多。
关于bash - 在unix中排序日期字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11536368/