2016-12-11 9 views
0

Предположим, у меня есть входной файл, который выглядит следующим образом:Сортировать линии основаны только на его части

65CH6  N 990 3.717 2.836 2.649 
65CH6 HMN1 991 3.807 2.880 2.647 
61VAL  N 894 4.260 3.037 2.527 
61VAL  HN 895 4.355 3.063 2.538 
61VAL  CA 896 4.189 2.958 2.625 
61VAL  C 908 4.057 3.023 2.669 
61VAL  O 909 3.952 2.958 2.668 
64PHE  N 938 3.817 3.002 2.420 
64PHE  HN 939 3.915 3.018 2.412 
64PHE  CA 940 3.760 2.868 2.403 
64PHE  HA 941 3.682 2.866 2.327 

Теперь я хотел бы отсортировать эти строки, но только на основе первого столбца, т.е. получить что-то вроде этого :

61VAL  N 894 4.260 3.037 2.527 
61VAL  HN 895 4.355 3.063 2.538 
61VAL  CA 896 4.189 2.958 2.625 
61VAL  C 908 4.057 3.023 2.669 
61VAL  O 909 3.952 2.958 2.668 
64PHE  N 938 3.817 3.002 2.420 
64PHE  HN 939 3.915 3.018 2.412 
64PHE  CA 940 3.760 2.868 2.403 
64PHE  HA 941 3.682 2.866 2.327 
65CH6  N 990 3.717 2.836 2.649 
65CH6 HMN1 991 3.807 2.880 2.647 

вместо того, что я получаю с sort -g file.dat > file-sorted.dat

61VAL  CA 896 4.189 2.958 2.625 
61VAL  HN 895 4.355 3.063 2.538 
61VAL  C 908 4.057 3.023 2.669 
61VAL  N 894 4.260 3.037 2.527 
61VAL  O 909 3.952 2.958 2.668 
64PHE  CA 940 3.760 2.868 2.403 
64PHE  HA 941 3.682 2.866 2.327 
64PHE  HN 939 3.915 3.018 2.412 
64PHE  N 938 3.817 3.002 2.420 
65CH6 HMN1 991 3.807 2.880 2.647 
65CH6  N 990 3.717 2.836 2.649 

An d, что я получаю с sort -g -k1,5 file.dat > file-sorted.dat это

61VAL  CA 896 4.189 2.958 2.625 
61VAL  HN 895 4.355 3.063 2.538 
61VAL  C 908 4.057 3.023 2.669 
61VAL  N 894 4.260 3.037 2.527 
61VAL  O 909 3.952 2.958 2.668 
64PHE  CA 940 3.760 2.868 2.403 
64PHE  HA 941 3.682 2.866 2.327 
64PHE  HN 939 3.915 3.018 2.412 
64PHE  N 938 3.817 3.002 2.420 
65CH6 HMN1 991 3.807 2.880 2.647 
65CH6  N 990 3.717 2.836 2.649 

ответ

1

Вы должны указать начальный ключ и количество ключей, а также отключить «последнего» функциональность, которая сортирует все остальное:

sort -g -k1,1 -s file.dat > file-sorted.dat 

См sort man page для получения дополнительной информации.

+0

Ох, я этого не видел! Дурак я. Спасибо, что указали это. – user2300369

+0

Ну, на самом деле это не работает, как предполагается. Команда '' sort'' частично сортирует строки в соответствии с другими частями линии. – user2300369

+0

@ пользователь2300369: Моя ошибка. Вам нужно указать стартовый ключ и количество клавиш, а не длину ключа. Итак, 'k1,1' - правильный ответ. –

 Смежные вопросы

  • Нет связанных вопросов^_^