簡體   English   中英

bash:按相同的值排序將給出不同的順序

[英]bash: sorting on same values gives different orders

我有以下兩個文件:

文件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

我使用sort根據第2列對這些文件進行排序,第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來連接兩個文件即可。 非常感謝!

使用-k 2,2僅基於第二列進行排序。 -k 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


進一步閱讀: 根據第三列進行排序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM