Linux基于第一列

时间:2017-03-03 21:30:10

标签: linux command-line-interface

我尝试使用以下命令根据第一列中的数字对一长串csv文件进行数字排序:

->  head -1 file.csv ; tail -n +2 file.csv | sort -t , -k1n

(我用管道头/尾命令跳过文件的第一行,因为它是一个标题并包含字符串) 但是,它不会返回完全排序的列表。其中一半是分类的,另一半是这样的:

9838,2361,8,947,2284
9842,2135,2,261,2511
9846,2710,1,176,2171
986,2689,32,123,2177
9888,2183,15,30,2790
989,2470,33,887,2345

有人可以告诉我我做错了什么吗?我也尝试过以下相同的结果:

-> sort -k1n -t"," file.csv

2 个答案:

答案 0 :(得分:1)

tail -n +2 file.csv | sort -k1,2 -n -t","应该可以解决问题。

答案 1 :(得分:1)

要在第一列执行数字排序,请使用以下方法:

tail -n +2 /file.csv | sort -n -t, -k1,1

输出:

986,2689,32,123,2177
989,2470,33,887,2345
9838,2361,8,947,2284
9842,2135,2,261,2511
9846,2710,1,176,2171
9888,2183,15,30,2790
  

-k pos1 [,pos2]

Specify a sort field that consists of the part of the line between pos1 and pos2 
(or the end of the line, if pos2 is omitted), inclusive.
In its simplest form pos specifies a field number (starting with 1) ...