【问题标题】:How to sort values inside of subgroups in bash [duplicate]如何在bash中对子组内的值进行排序[重复]
【发布时间】: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


    【解决方案1】:

    试试这个:

    sort -k2,2 -k3,3 -n file
    

    这意味着对键 2 和键 3 进行排序,这似乎是您想要的,-n 意味着按数字排序,这显然不适用于日期和时间,但它会比字母数字排序更接近您想要的...

    【讨论】:

    • 如果我添加 -n 它会正确排序时间,但日期不太正确...如果只使用 -k2,2 -k3,3 而没有 -n 它会正确排序日期,但是时间不对……不知道为什么会这样。
    • 我也尝试过使用 sort -k2,2 -k3,3n 但时间仍然不对...
    • 我更新了帖子。我解释了为什么发布的其他答案不能解决这个问题......
    • 我的意思是重复...
    猜你喜欢
    • 1970-01-01
    • 2018-08-14
    • 2021-02-07
    • 2021-05-07
    • 1970-01-01
    • 2020-11-19
    • 2011-11-18
    • 2021-12-03
    • 1970-01-01
    相关资源
    最近更新 更多