Я использую утилиту sort
(GNU coreutils, версия 8.4), чтобы отсортировать файл по первым пяти столбцам, все из которых являются числовыми и разделены вкладкой.Для этого я использую следующий вызов:
sort --field-separator=$'\t' -nk1 -nk2 -nk3 -nk4 -nk5 myFileUnsorted.bcp > myFileSorted.bcp
По большей части это работает нормально, но при некоторых пустых значениях я получаю некоторое (на вид) противоречивое поведение.В моем конкретном случае записи в третьем (и четвертом) столбце пусты, и я ожидаю, что отсортированный результат будет выглядеть так:
...
1 2 0 ...
1 2 84 ...
1 2 168 ...
...
В моем выходном файле я, однако, получаюследующий порядок:
1 2 0 ...
1 2 1 0 ...
1 2 1 84 ...
...
1 2 64 168 ...
1 2 84 ...
1 2 168 ...
Независимо от того, следует ли размещать записи, содержащие пустые значения в третьем (/ четвертом) столбце, в начале или в конце, я ожидаю, что они будут помещены вместе.
Глядя на эти три строки в шестнадцатеричном редакторе (vim
версия 7.4 с :%!xxd
), я получаю следующее:
31 09 32 09 09 09 30 09 ...
31 09 32 09 09 09 38 34 09 ...
31 09 32 09 09 09 31 36 38 09 ...
Это наводит меня на мысль, что не существует специальных,невидимые символы в пустых столбцах, которые могут быть ответственны за их сортировку отдельно друг от друга.
Кто-нибудь знает, почему sort
упорядочивает строки так, как это делает?Возможно ли, чтобы они были расположены так, как они есть в моем первом примере / ожидаемом результате?Заранее спасибо!
Я использую bash
(GNU bash, версия 4.1.2 (1) -релиз (x86_64-redhat-linux-gnu)) и попробовал ksh
(версия AJM 93u +), оба дали один и тот же результат, если это имеет какое-либо значение.