Я попытался отсортировать содержимое файла на рабочем столе Ubuntu 14.04 (Trusty Tahr). В моем случае ожидаемый результат должен совпадать с оригинальным контентом, но фактический результат - нет. Почему?
# cat test.txt
a++-a
a++-b
a++-c
ab
ac
# cat test.txt | sort
a++-a
ab
a++-b
ac
a++-c
command-line
sort
user2909884
источник
источник
cat
.cat test.txt | sort
наsort test.txt
:)cat
для начала есть полезные формулировки . Например,cat FILE | grep dev | sort
будут отображаться только строки с "dev" в них (в отсортированном порядке). Использованиеsort FILE | grep dev
дает тот же результат, но цветной.Ответы:
Вы можете использовать
LC_ALL
переменную, установить егоLC_ALL=C
перед вызовомsort
Прочтите этот ответ, если вы хотите знать, что это волшебно
LC_ALL=C
. Вот краткое резюме:Кроме того, как указал @KenMollerup, цитата из
man sort
Таким образом, при использовании сортировки с
LC_ALL=C
сортировать сравнивать символы в байтовом порядке. В противном случаеsort
будут игнорироваться все не буквенно-цифровые символы.источник
man sort
. Я не заметил этогоСортировка использует алфавитную и числовую сортировку, также как и мы, специальные символы, такие как + - <> ... игнорируются, числа обрабатываются как числовые, поэтому 1, 2, 3 .. предшествует 11, 12 1066 1104 - смотрите!
Таким образом, ваш список выглядит как: аа, а-а, а-а-а-а-а
источник
man sort
, добавить примеры.