【发布时间】:2019-05-13 10:35:37
【问题描述】:
我必须以这样一种方式对 2 个文件的内容进行排序,即我必须首先按日期对其进行排序,然后在每个子组中也按时间对它们进行排序。我尝试通过简单地使用来实现这一点
sort -k 2
然后
| sort -k 3
第二行包含日期,第三行包含时间。 问题在于,在第二个排序命令之后,它并没有对每个子组中的值进行实际排序,而是仅按时间重新排列所有值,完全忽略了前面的排序。 例如,假设我有以下输入:
名称1 3.5。 10:00
名称2 3.5。 11:00
名称3 3.5。 8:00
名称4 4.5。 13:00
名称5 5.5。 7:00
我想按它们在每个子组中的时间分别对它们进行排序,同时日期保持相同的顺序:
名称3 3.5。 8:00
名称1 3.5。 10:00
名称2 3.5。 11:00
名称4 4.5。 13:00
名称5 5.5。 7:00
如果解决方案可以写在一行中(例如使用 |),那也将非常有帮助。
提前谢谢你。
更新:
我尝试使用 sort -k2,2 -k3,3 但无论出于何种原因它仍然无法正常工作!它正确地对日期进行排序,但时间不正确。 如果我在最后添加 -n ,它会正确排序时间,但是日期是乱序的...... 我什至尝试正常排序日期和数字时间: 排序 -k2,2 -k3,3n 但它仍然只正确排序日期,而时间仍然无序。我不知道还能做什么。这可要了我的命……
【问题讨论】:
标签: bash