2016-10-19 63 views
0

我有以下兩個文件:擊:排序上相同的值賦予不同的順序

文件1:

4 rs10000009 0 71048953 G A 
4 rs10000010 0 21618674 C T 
4 rs10000011 0 138223055 T C 
2 rs1000001 0 50711642 T G 
4 rs10000005 0 85161558 G A 
12 rs1000000 0 126890980 A G 
4 rs10000003 0 57561647 A G 
4 rs10000006 0 108826383 C T 
4 rs10000007 0 114553253 C A 
4 rs10000008 0 172776204 T C 

文件2:

4 rs10000007 C A  0.006562  762 
4 rs10000008 T C  0.01575  762 
4 rs10000009 G A   0  762 
12  rs1000000 A G  0.2388  762 
4 rs10000010 C T  0.4921  762 
4 rs10000003 A G  0.2992  762 
4 rs10000005 G A  0.4409  762 
4 rs10000012 G C  0.1417  762 
4 rs10000006 C T  0.02625  762 
4 rs10000011 T C  0.03675  762 

我用那種基於這些文件進行排序第2列,其中包含兩個文件的相同值。

sort -f -k 2 file1 > file1.sorted 
sort -f -k 2 file2 > file2.sorted 

不過,我得到兩個不同排序文件:

file1.sorted:

12 rs1000000 0 126890980 A G 
4 rs10000003 0 57561647 A G 
4 rs10000005 0 85161558 G A 
4 rs10000006 0 108826383 C T 
4 rs10000007 0 114553253 C A 
4 rs10000008 0 172776204 T C 
4 rs10000009 0 71048953 G A 
4 rs10000010 0 21618674 C T 
2 rs1000001 0 50711642 T G 
4 rs10000011 0 138223055 T C 

file2.sorted:

4 rs10000003 A G  0.2992  762 
4 rs10000005 G A  0.4409  762 
4 rs10000006 C T  0.02625  762 
4 rs10000007 C A  0.006562  762 
4 rs10000008 T C  0.01575  762 
4 rs10000009 G A   0  762 
12  rs1000000 A G  0.2388  762 
4 rs10000010 C T  0.4921  762 
4 rs10000011 T C  0.03675  762 
4 rs10000012 G C  0.1417  762 

缺少什麼我在這裏?如何讓這兩個文件以相同的方式排序?只要我可以使用join來加入這兩個文件,對我來說這並不重要。非常感謝!

+1

你可能需要使用'-k 2 ,2' – Sundeep

+1

看到這個優秀的答案進一步細節:http://unix.stackexchange.com/questions/104525/sort-based-on-the-third-column – Sundeep

回答

2

使用-k 2,2僅基於第二列進行排序。 -k 2指從第2列排序開始

$ sort -f -k 2,2 file2 
12  rs1000000 A G  0.2388  762 
4 rs10000003 A G  0.2992  762 
4 rs10000005 G A  0.4409  762 
4 rs10000006 C T  0.02625  762 
4 rs10000007 C A  0.006562  762 
4 rs10000008 T C  0.01575  762 
4 rs10000009 G A   0  762 
4 rs10000010 C T  0.4921  762 
4 rs10000011 T C  0.03675  762 
4 rs10000012 G C  0.1417  762 

使用-b選項忽略前導空格,爲前:sort -bf -k 2,2 file2


延伸閱讀:Sort based on the third column

+0

'sort -f -k 2,2 file1'給出'12 rs1000000 0 126890980 AG'作爲最後一行,我有'sort(GNU coreutils)8.25' – anubhava

+0

@anubhava,同樣的版本'sort(GNU coreutils)8.25' ...輸出是相同的,無論我使用'-f'或'-bf' ..和'12 rs1000000 0 126890980 AG'是file2的第一行... – Sundeep

+0

@anubhava,我認爲這種差異可能是由於locale 'settings ..試圖看看我是否可以基於http://unix.stackexchange.com/questions/104525/sort-based-on-the-third-column複製你的輸出。 – Sundeep