Команда sort сортирует содержимое файла в алфавитном или нумерологическом порядке. Если задать несколько файлов, то команда sort соединит их и, рассортировав, выдаст единым выводом. По умолчанию, объектом сортировки будут строки, однако опции позволяют выбирать объект сортировки: колонки, столбцы и прочие элементы форматирования файла. Разделителем между ними служат пробелы, однако соответствующие опции позволяют задать иные разделители.

Список ключей

-b, --ignore-leading-blanks - игнорировать начальные пропуски
-d, --dictionary-order - рассматривать только пропуски, буквы и цифры
-f, --ignore-case - игнорировать регистр букв
-i, --ignore-nonprinting - рассматривать только печатные знаки, игнорировать спец. символы
-n, --numeric-sort - сравнивать численные значения строк
-h, --human-numeric-sort - сравнивать численные значения с учетом сокращения степени (2K, 1G)
-r, --reverse - обратить результаты сравнения
-u, --unique - с -c, проверять порядок строго; без -c, выводить только первое среди нескольких равных
-c, --check - проверять, сортированы ли входные файлы; не сортировать
-k, --key=Поз1[,Поз2] - начинать ключ в Поз1 и завершать на Поз2 (отсчет от 1)
-o, --output=ФАЙЛ - выводить в ФАЙЛ, а не на стандартный вывод
-t, --field-separator=РАЗДЕЛИТЕЛЬ - использовать при поиске ключевых полей РАЗДЕЛИТЕЛЬ, а не переход от непробельных знаков к пробельным
-m - использовать оперативную память в качестве буфера

 

-Сортировать файл по алфавиту:

# sort debts.txt

 

-Сортировать файл по алфавиту в обратном порядке:

# sort -r debts.txt

 

-Не учитывать регистр букв:

# sort -f case.txt

 

Опция -n используется всегда, когда нужно сортировать числа, разумеется в порядке возрастания (или убывания, добавив опцию -r). Опция -k позволяет задавать объект сортировки: все эти столбцы, колонки, и тому подобные элементы форматирования файла.

-Отсортируем по числам во втором столбце:

# sort -nrk 2 debts.txt

 

-Отсортировать по 5тому символу во втором столбце:

# sort -k2.5 pay.txt

 

-Отсортируем только по второму столбцу:

# sort -k 2,2 ivanov.txt

Первая двойка означает начало объекта сортировки (колонки текста), а вторая двойка через запятую - конец объекта сортировки. То есть команде запрещено использовать для сортировки символы после последней буквы второй колонки.

 

-Первичная сортировка по второму столбцу, вторичная по 4ому(цифровому):

# sort -k 2,2 -k 4n ivanov.txt

 

-Сортировка по месяцам года:

# sort -Mk 4 debts.txt

 

-Сортировка по 4му столбцу, за разделитель использовать точку:

# sort -t '.' -k4 pay.txt

 

-Проверить сортировку файла по полю:

# sort -cn 123.txt

 

-Не выводить повторяющиеся значения(-u):

# sort -uk 2,2 ivanov.txt

 

-Игнорировать пробелы вначале строк:

# sort -b ivanov.txt

 

-Отсортировать по второму столбцу, несмотря на кол-во пробелов перед ним:

# sort -bk2 run.txt

 

-Сортировка математических чисел(например10e1 или 10.11) (-g):

# sort -g notation.txt

Теперь числа выстроились по ранжиру. Нужно сказать, что применять опцию -g следует в крайних случаях, когда нельзя обойтись опцией -n. Дело в том, что опция -g медленнее, и на больших файлах это становится заметным.

 

-(--temporary-directory=КАТАЛОГ) Позволяет указать директорию для временных файлов, иную, чем положено по умолчанию (/tmp или $TMPDIR):

# sort -T /имя_каталога filename

 

-Сортировка IP-адресов:

# cat ip-list | sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 | uniq >> sorted-ips

 

Команда sort работает с кириллицей неадекватно.

 

Материалы:

http://aidalinux.ru/w/Sort