Предположим, у меня есть входной файл, который выглядит следующим образом:Сортировать линии основаны только на его части
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
Ох, я этого не видел! Дурак я. Спасибо, что указали это. – user2300369
Ну, на самом деле это не работает, как предполагается. Команда '' sort'' частично сортирует строки в соответствии с другими частями линии. – user2300369
@ пользователь2300369: Моя ошибка. Вам нужно указать стартовый ключ и количество клавиш, а не длину ключа. Итак, 'k1,1' - правильный ответ. –