2013-02-04 77 views
1

我有這樣的排序命令不能按預期工作?

[email protected],2009-11-27 
[email protected],2009-11-27 
[email protected],2009-11-27 

的數據集。當我運行命令刪除所有列2的相同的條目的

sort -t ',' -k2 stars.txt -u 

它刪除列1的條目,以刪除列2的重複條目,我有進入-k3標誌

sort -t ',' -k3 stars.txt -u 

原因是什麼,誰能給我解釋一下?爲什麼我必須在文件的列中輸入+1才能刪除列?

+0

你可以顯示'-k2'和'-k3'的輸出結果嗎?也許你應該確定你正在使用的操作系統。它幾乎必須是你正在使用的GNU'sort';傳統的Unix系統不允許像你一樣交錯文件名和選項。 '-k3'符號找不到第3列,因此它將所有行視爲相同。 –

回答

2

在我的系統的所有正常工作:

$ sort -t, -k1 -u 1.txt 
[email protected],2009-11-27 
[email protected],2009-11-27 

$ sort -t, -k2 -u 1.txt 
[email protected],2009-11-27 

這可能是由於你的語言環境。 您可以請求補充命令,但LANG = C?

$ LANG=C sort -t, -k1 -u 1.txt 
$ LANG=C sort -t, -k2 -u 1.txt 
1

這是典型的awk工作,不需要排序。我在這裏添加一行簡短的內容,以防你想嘗試一下。

awk -F, '!a[$2]++' file 

將完成這項工作。