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

sil*_*dev 1 csv sorting bash

论坛上有多个答案,关于如何使用终端的排序命令对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
Run Code Online (Sandbox Code Playgroud)

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

Ben*_* W. 5

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

$ sort -t ',' -k 3,3 -k 2,2 infile
Run Code Online (Sandbox Code Playgroud)

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

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

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

1引用手册:

对于大多数应用程序,将跨越多个字段的键作为数字处理将不会达到预期效果.

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