2017-03-03 41 views
0

我試圖數字排序基於第一列中的數字csv文件的長列表,使用以下命令:Linux的數字排序基於第一列

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

(我管頭/ tail命令跳過文件的第一行,因爲它是一個標題幷包含字符串) 但是,它不返回完全排序的列表。一半是排序,另一半是這樣的:

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 

回答

1

tail -n +2 file.csv | sort -k1,2 -n -t","應該這樣做。

+0

什麼-k1,2做的sopposed到-k1,1,或者只是甚至-K1? – viviboox3

+0

如果您省略了「-k」的第二個值,它將使用該行的結尾。換句話說,'-k 1'指定了從字段1到行尾的排序字段。 – Brian

+0

so -k1,2指定從第1列到第2列的排序字段,-k1,1將它指定爲第1列? – viviboox3

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 

-kPOS1 [, 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) ...