Как отсортировать файл на основе раздела поля

Я хотел бы отсортировать файл:

D104HN-D104HA 8.320 4.521 1.69e+05 -- D104HN-D104HB* 8.320 2.823 2.93e+05 -- A90HB#-A90HA 1.655 4.207 7.12e+05 -- A90HB#-F91HA 1.653 4.411 8.59e+04 -- A114HB#-A114HA 1.253 4.098 7.67e+05 -- A114HB#-R111HA 1.251 3.929 1.76e+05 -- A114HB#-W110HA 1.253 4.451 3.68e+04 -- F91HE*-F91HZ 7.237 7.122 7.85e+05 -- F91HE*-K92HA 7.242 3.910 4.88e+04 -- 

и получить это

  A90HB#-A90HA 1.655 4.207 7.12e+05 -- A90HB#-F91HA 1.653 4.411 8.59e+04 -- F91HE*-F91HZ 7.237 7.122 7.85e+05 -- F91HE*-K92HA 7.242 3.910 4.88e+04 -- D104HN-D104HA 8.320 4.521 1.69e+05 -- D104HN-D104HB* 8.320 2.823 2.93e+05 -- A114HB#-A114HA 1.253 4.098 7.67e+05 -- A114HB#-R111HA 1.251 3.929 1.76e+05 -- A114HB#-W110HA 1.253 4.451 3.68e+04 -- 

То есть, сортировать численно на втором и последующих символах первой последовательности незабитых строк.

 sort -k 1.2bn < file 

Сортирует n umerically на k ey, начиная с 2 го символа 1 го поля, игнорируя ведущие b знаки (и заканчивая в конце строки, но это не имеет значения для численного сортировки, который учитывает только начальную последовательность десятичной цифр).

Обратите внимание: если есть связь, как между этими двумя строками:

  F91HE*-K92HA 7.242 3.910 4.88e+04 -- F91HE*-F91HZ 7.237 7.122 7.85e+05 -- 

Затем порядок будет основан на методе последнего курорта, который полностью сопоставляет две строки в виде строк.

В некоторых локалях пробелы будут проигнорированы в первом случае для сравнения строк, в этом случае F91 будет существовать до K92 (как F сортирует до K ). С другими, как и в языке C, пробелы не будут игнорироваться, а K92 будет тогда раньше F91 (пространство сортируется до F ).

Для типа последнего курорта, который игнорировал бы ведущие пробелы независимо от языка, вы могли бы сделать:

 sort -k 1.2bn -k 1b < file 

Этот 1b будет сортировать (по ссылкам на первом ключе) лексически на участке линии, который начинается с первого поля, игнорирующего ведущие пробелы.