預期

2012-12-13 68 views
2

我有3個領域的一個非常簡單的文本文件,每次用空格隔開sort命令不起作用,像以下:預期

 
123 15 0 
123 14 0 
345 12 0 
345 11 0 

我發出某種命令由第一排序列:sort -k 1 myfile。但它不會排在第一列。它按整行排序,得到以下結果:

 
123 14 0 
123 15 0 
345 11 0 
345 12 0 

我的命令或文件有什麼問題嗎?

+0

但它仍然是第一列排序。你期望輸出什麼? – Annjawn

+0

它也排序第二列,我不想要。實際上它排序整個行,即使我指定-k1 – Ryan

+0

您的文件中的數據已經按第一列排序。 – Annjawn

回答

3

您需要使用:

sort -k 1,1 -s myfile 

如果要排序僅在第一個字段。此語法指定排序的開始和結束字段。 sort -k 1表示從第一個字段開始直到行尾。爲確保線路保持與排序鍵相同的輸入相同的順序,您需要使用-s標誌(GNU)進行穩定排序。

sort(1)手冊頁請參閱本:

KEYDEF is F[.C][OPTS][,F[.C][OPTS]] for start and stop position, where 
F is a field number and C a character position in the field; both are 
origin 1, and the stop position defaults to the line's end. 

info page

The --stable (-s) option disables this last-resort comparison so that 
lines in which all fields compare equal are left in their original relative 
order. 
+0

雖然仍然排序第二列! – Annjawn

+0

@Annjawn:在我的系統中看到更新的答案 – camh

+0

它說'sort:not a recognized flag:s'。它是一個unix環境。 – Annjawn

-1

默認情況下,sort命令在整行上排序。 你應該使用-k選項來指定哪一列作爲排序索引。