Sorting a column of CSV file resulting in 1123 appearing before 232

跟風遠走 提交于 2019-12-11 21:19:15

问题


Specific question - bad title I am trying to sort a set of CSV data like -

2014/06/04 13:19:06.970,1124,Post Request,200,OK,text,true,,782,1,0
2014/06/04 13:18:27.241,237,Post Request,200,OK,text,true,,303,1,0
2014/06/04 13:12:15.973,2224,Post Request,200,OK,text,true,,1551,1,0
2014/06/04 13:12:31.365,238,Post Request,204,No Content,,true,,237,1,0
2014/06/04 13:12:29.892,1429,Post Request,204,No Content,,true,,237,1,0

using -

sort -t"," -k2,3

The result is

2014/06/04 13:19:06.970,1124,Post Request,200,OK,text,true,,782,1,0
2014/06/04 13:18:27.241,1429,Post Request,200,OK,text,true,,303,1,0
2014/06/04 13:12:15.973,2224,Post Request,200,OK,text,true,,1551,1,0
2014/06/04 13:12:31.365,237,Post Request,204,No Content,,true,,237,1,0
2014/06/04 13:12:29.892,238,Post Request,204,No Content,,true,,237,1,0

But I want something like -

2014/06/04 13:19:06.970,237,Post Request,200,OK,text,true,,782,1,0
2014/06/04 13:18:27.241,238,Post Request,200,OK,text,true,,303,1,0
2014/06/04 13:12:15.973,1124,Post Request,200,OK,text,true,,1551,1,0
2014/06/04 13:12:31.365,1429,Post Request,204,No Content,,true,,237,1,0
2014/06/04 13:12:29.892,2224,Post Request,204,No Content,,true,,237,1,0

or reverse of this (actually reverse is better for me). What am I doing wrong?


回答1:


Add -n to have it sorted numerically:

$ sort -n -t"," -k2,3 file
2014/06/04 13:18:27.241,237,Post Request,200,OK,text,true,,303,1,0
2014/06/04 13:12:31.365,238,Post Request,204,No Content,,true,,237,1,0
2014/06/04 13:19:06.970,1124,Post Request,200,OK,text,true,,782,1,0
2014/06/04 13:12:29.892,1429,Post Request,204,No Content,,true,,237,1,0
2014/06/04 13:12:15.973,2224,Post Request,200,OK,text,true,,1551,1,0

Or reverse with -r:

$ sort -rn -t"," -k2,3 file
2014/06/04 13:12:15.973,2224,Post Request,200,OK,text,true,,1551,1,0
2014/06/04 13:12:29.892,1429,Post Request,204,No Content,,true,,237,1,0
2014/06/04 13:19:06.970,1124,Post Request,200,OK,text,true,,782,1,0
2014/06/04 13:12:31.365,238,Post Request,204,No Content,,true,,237,1,0
2014/06/04 13:18:27.241,237,Post Request,200,OK,text,true,,303,1,0

From man sort:

-n, --numeric-sort

compare according to string numerical value

-r, --reverse

reverse the result of comparisons



来源:https://stackoverflow.com/questions/24032019/sorting-a-column-of-csv-file-resulting-in-1123-appearing-before-232

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!