2013-08-19 6 views
7

У меня есть файл с колонками показано ниже:сортировать по колонке Linux

chr1 91.4062 
chr10 97.9150 
chr11 116.7630 
chr12 106.7870 
chr13 116.1050 
chr14 126.2180 
chr15 110.2320 
chr16 96.8076 
chr17 113.5970 
chr18 86.1011 
chr19 130.6770 
chr2 111.4620 
chr20 68.4864 
chr21 107.0810 
chr22 140.7750 
chr23 110.9590 
chr24 68.4785 
chr25 102.2080 
chr26 72.2762 
chr27 96.2213 
chr28 85.5570 
chr29 126.3800 
chr3 116.1830 
chr30 89.5663 
chr31 89.1227 
chr32 128.6190 
chr4 117.3620 
chr5 78.1921 
chr6 85.4915 
chr7 107.2620 
chr8 112.9560 
chr9 69.0250 
chrX 66.0736 

Я хочу, чтобы отсортировать его на основе 1-го столбца и результат должен выглядеть следующим образом:

chr1 91.4062 
chr2 111.4620 
chr3 116.1830 
chr4 117.3620 
chr5 78.1921 
chr6 85.4915 
chr7 107.2620 
chr8 112.9560 
chr9 69.0250 
chr10 97.9150 
chr11 116.7630 
chr12 106.7870 
chr13 116.1050 
chr14 126.2180 
chr15 110.2320 
chr16 96.8076 
chr17 113.5970 
chr18 86.1011 
chr19 130.6770 
chr20 68.4864 
chr21 107.0810 
chr22 140.7750 
chr23 110.9590 
chr24 68.4785 
chr25 102.2080 
chr26 72.2762 
chr27 96.2213 
chr28 85.5570 
chr29 126.3800 
chr30 89.5663 
chr31 89.1227 
chr32 128.6190 
chrX 66.0736 

Любое решение с использованием Linux-команды будут полезны.

ответ

17

sort -V на помощь:

sort -V file 

От man sort:

-V, --version сортировки

естественный вид (версии) в тексте


В случае, если вы не имеете -V вариант в вашей команде sort, есть альтернатива: сортировка по первой колонке, начиная от 4-го символа (-k1.4), а затем сортировать численно (-n).

sort -k1.4 -n file 

В обоих случаях выход следующим образом:

chrX 66.0736 
chr1 91.4062 
chr2 111.4620 
chr3 116.1830 
chr4 117.3620 
... 
chr26 72.2762 
chr27 96.2213 
chr28 85.5570 
chr29 126.3800 
chr30 89.5663 
chr31 89.1227 
chr32 128.6190 
+0

Он говорит, сортировать: неверный вариант - V – chas

+0

@ user1779730 проверить мой обновленный ответ, есть альтернатива. – fedorqui

+0

Это работает. Но это дает chrX в начале, который должен быть в конце. – chas