使用"排序"根据时间戳对终端中的CSV进行排序

时间:2016-02-03 14:02:53

标签: bash sorting csv

关于如何使用终端的排序命令对csv进行排序,论坛上有多个答案,但似乎没有一个对我有用。 这是文件结构:

cowboy,16:36:37,2006-03-01,top/adult/arts/animation/anime/resources
pants,14:29:10,2006-03-01,top/adult/arts/magazines and e-zines
women,01:40:40,2006-03-01,top/adult/arts/literature/publishers
happy,05:02:05,2006-03-02,top/adult/arts/comics/free
hen,21:23:37,2006-03-01,top/adult/arts/comics/free
hurts,16:49:59,2006-03-01,top/adult/arts/magazines and e-zines
tent,00:45:26,2006-03-01,top/adult/arts/magazines and e-zines
toon.com,02:00:44,2006-03-01,top/adult/arts/animation/cartoons/members
sim city,18:35:28,2006-03-01,top/adult/arts/magazines and e-zines
superheros,12:34:15,2006-03-01,top/adult/arts/comics/comic strips and panels/members

我试过了sort --key=3,2 -t,,但它不起作用。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:5)

首先按日期排序,然后按时间排序,您可以使用

$ sort -t ',' -k 3,3 -k 2,2 infile

-t设置分隔符,-k要排序的字段。请注意,您必须使用3,3仅按日期字段排序;只有3才会使用第三个字段和行的其余部分进行排序。

2,2从技术上讲不是必需的,-k 2也可以。通常,将排序字段限制为使用行的其余部分可以防止出现意外和意外行为 1

由于日期和时间戳整齐地填零,因此无需按数字排序。

1 引用manual

  

对于绝大多数应用程序,将跨越多个字段的键视为数字将无法达到预期效果。

一如既往:打破规则是可以的 - 如果你了解它们。