Sort

Программа sort сортирует файлы по строкам.

sort [параметры] [файл]...

При сортировке программа учитывает структуру файла. Если при вызове не указать ни одного параметра, строки сортируются сначала по первому полю. Если в нескольких строках содержимое первого поля одинаково, происходит сортировка этих строк по второму полю. Если второе поле одинаково — по третьему и т.д.

Внимание! По умолчанию в качестве символов разделителей полей используются пробелы и табуляции. Поля, в отличии от программы cut, нумеруются с нуля.

У sort много различных параметров, влияющих на её работу. Ниже приведены только некоторые из них.

  • –n — сортировать цифры как цифры, а не как символы. Если не указывать этот параметр, sort рассматривает цифры как символы, при этом может получиться, что 20 будет больше чем 100.
  • –r — обратный порядок сортировки.
  • –b — игнорировать начальные пробелы в строке.
  • -t — определят символ разделитель полей. По умолчанию используются пробельные символы.

При вызове программы можно указать поля, по которым будет происходить сортировка. Это делается при помощи символов + и –, после которых идут цифры. Например, чтобы отсортировать вывод программы ls по четвёртому полю, необходимо выполнить следующую команду, которая сортирует поля начиная с четвёртого поля, заканчивая пятым, не включая последнего. То есть сортировка происходит только по четвёртому полю.

$ ls -l | sort +4 -5
итого 20
-rw-r--r--  1 artur users 1118 1994-01-28 06:03 fdprm
-rw-r--r--  1 artur users 2299 2005-01-31 02:35 dialogrc
-rw-r--r--  1 artur users  582 2003-10-16 18:56 ftpusers
-rw-r--r--  1 artur users   79 2003-10-14 22:19 bashrc
-rw-r--r--  1 artur users   90 2005-04-15 16:59 blkid.tab
$

Четвёртое поле — это размер файла. Если использовать команду из предыдущего примера, то сортировка будет не корректной. По умолчанию цифры рассматриваются программой sort как простые символы. Поэтому, что бы сортировка по размеру файла была правильной, необходимо использовать параметр –n.

$ ls -l | sort -n +4 -5
итого 20
-rw-r--r--  1 artur users   79 2003-10-14 22:19 bashrc
-rw-r--r--  1 artur users   90 2005-04-15 16:59 blkid.tab
-rw-r--r--  1 artur users  582 2003-10-16 18:56 ftpusers
-rw-r--r--  1 artur users 1118 1994-01-28 06:03 fdprm
-rw-r--r--  1 artur users 2299 2005-01-31 02:35 dialogrc
$