如何在bash中对子组内的值进行排序

时间:2019-05-13 10:35:37

标签: bash

我必须对2个文件的内容进行排序,这样我必须首先按日期对其进行排序,然后在每个子组中也按时间对其进行排序。我尝试通过简单地使用

来实现
sort -k 2

然后

| sort -k 3

第二行包含日期,第三行包含时间。 问题在于,不是在第二个sort命令之后对每个子组中的值进行实际排序,而是仅按时间重新排列所有值,而完全忽略了先前的排序。 例如,说我有以下输入:

名称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

如果解决方案可以单行编写(例如,使用|),这也将非常有帮助。

谢谢。

更新:

我尝试使用-k2,2 -k3,3排序,但无论出于何种原因,它仍然不起作用!它可以正确排序日期,但是时间混乱。 如果我在末尾添加-n,则可以正确地对时间进行排序,但是日期却乱序了... 我什至尝试按正常方式对日期和时间进行数字排序:     排序-k2,2 -k3,3n 但它仍然只能正确排序日期,而时间仍然不正确。我不知道该怎么办这真杀了我...

1 个答案:

答案 0 :(得分:0)

尝试一下:

$(document).height();

这意味着先对键2进行排序,然后再对键3进行排序,这似乎是您想要的,而sort -k2,2 -k3,3 -n file 则意味着对数字进行排序,这显然不适用于日期和时间,但是比字母数字排序更接近您想要的...