关于如何使用终端的排序命令对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,
,但它不起作用。有人可以帮忙吗?
答案 0 :(得分:5)
首先按日期排序,然后按时间排序,您可以使用
$ sort -t ',' -k 3,3 -k 2,2 infile
-t
设置分隔符,-k
要排序的字段。请注意,您必须使用3,3
仅按日期字段排序;只有3
才会使用第三个字段和行的其余部分进行排序。
2,2
从技术上讲不是必需的,-k 2
也可以。通常,将排序字段限制为不使用行的其余部分可以防止出现意外和意外行为 1 。
由于日期和时间戳整齐地填零,因此无需按数字排序。
1 引用manual:
对于绝大多数应用程序,将跨越多个字段的键视为数字将无法达到预期效果。
一如既往:打破规则是可以的 - 如果你了解它们。