2013-12-16 58 views
0

我有一個非常大的15列數據文件。我需要根據特定的列的所有行進行排序,說柱11.我在Linux中使用這個命令:如何按列排序文本文件並保持原始順序

sort -k11 -d myfile.txt > sortedfile 

的問題是,sort命令不保留文件的原始順序。敵人來說,如果我有這樣的事情:

1 mh3 

3 ygb 

4 mh3 

I need to have: 

1 mh3 

4 mh3 

3 ygb 

不過,我可能會得到:

4 mh3 

1 mh3 

3 ygb 

是否有任何選項可以保留原來的順序,或者我可以使用任何其他的命令?

回答

4

選項-s是你需要什麼(相當於--stable):

sort -k11,11 -d -s myfile.txt > sortedfile 

選項-k作品用的領域,所以你也許應該補充,11正如我上面做了,否則排序將使用鑰匙跨越第11列到行結束(默認)。

+0

我有另一個問題。我如何在命令中添加列分隔符?這些列由'\ t'分隔,但在同一列中有'空格'。排序也應用於空間,並且它改變了列的定義! – Maryam

+1

您可以使用排序的'-t'標誌來指定分隔符。 (好吧,遊戲有點晚了,但它可以幫助其他讀者)。 – John

相關問題