bash - 如何在bash中对子组内的值进行排序
问题描述
我必须以这样一种方式对 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 ,它会正确排序时间,但是日期是无序的......我什至尝试正常排序日期和数字时间: sort -k2,2 -k3,3n 但它仍然仅正确排序日期,而时间仍然无序。我不知道还能做什么。这要死我了……
解决方案
尝试这个:
sort -k2,2 -k3,3 -n file
这意味着对键 2 和键 3 进行排序,这似乎是您想要的,并且-n
意味着按数字排序,这显然不适用于日期和时间,但它会更接近您想要的比字母数字排序...
推荐阅读
- java - 如何确保我正在检查未选中 selenium java 的复选框
- javascript - react 重新渲染的条件是什么
- xml - 使元素的内容在 xsd 中唯一
- imageview - Android ImageView @drawable 选项没有出现
- python - 位置已被占用的时间的数据结构,可以快速更改这些时间
- python - 一个列表理解中的多个函数取决于条件
- angular - Angular FormArray 清除字段中的数据
- python-3.x - 具有非零初始条件的 Python3 ode 求解器失败
- python - 来自 to_datetime() 的奇怪行为
- tensorflow - TensorFlow 中的可微分性是什么?