Поля и параметры сортировки

10.4.1 Поля и параметры сортировки

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

Следующая команда может использоваться для mypasswdчисленной сортировки третьего поля файла. Для достижения этой сортировки используются три варианта:

-t:

Опция -tзадает разделитель полей . Если файл или ввод разделены разделителем, отличным от пробела, например, запятой или двоеточием, опция -tпозволит указать другой разделитель полей в качестве аргумента.

Файл mypasswd, использованный в предыдущем примере, использует :символ двоеточия в качестве разделителя для разделения полей, поэтому в следующем примере используется этот -t: параметр.

-k3

Опция -kуказывает номер поля . Чтобы указать, по какому полю сортировать, используйте -kпараметр с аргументом, чтобы указать номер поля, начиная с 1первого поля.

В следующем примере используется -k3параметр сортировки по третьему полю.

-n

Этот параметр определяет тип сортировки .

Третье поле в mypasswdфайле содержит числа, поэтому -nпараметр используется для числовой сортировки.

sysadmin@localhost:~$ sort -t: -n -k3 mypasswd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync

Другим часто используемым параметром команды sortявляется -rпараметр, который используется для выполнения обратной сортировки. Ниже показана та же команда, что и в предыдущем примере, с добавлением параметра -r , благодаря которому более высокие числа в третьем поле отображаются вверху вывода:

sysadmin@localhost:~$ sort -t: -n -r -k3 mypasswd
sync:x:4:65534:sync:/bin:/bin/sync 
sys:x:3:3:sys:/dev:/usr/sbin/nologin  
bin:x:2:2:bin:/bin:/usr/sbin/nologin  
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
root:x:0:0:root:/root:/bin/bash          

Наконец, вы можете выполнить более сложную сортировку, например сортировку по основному полю, а затем по дополнительному полю. Например, рассмотрим следующий файл значений, разделенных запятыми , файл, в котором запятая является разделителем полей:

sysadmin@localhost:~/Documents$ sort -t, -k2 -k1n -k3 os.csv
1991,Linux,Torvalds
1987,Minix,Tanenbaum
1970,Unix,Richie
1970,Unix,Thompson

Чтобы отсортировать сначала по операционной системе (поле № 2), затем по году (поле № 1), а затем по фамилии (поле № 3), используйте следующую команду:

sysadmin@localhost:~/Documents$ cat os.csv
1970,Unix,Richie
1987,Minix,Tanenbaum
1970,Unix,Thompson
1991,Linux,Torvalds

В следующей таблице представлены параметры, использованные в предыдущем примере:

Вариант

Функция

-t,

Указывает символ запятой в качестве разделителя поля

-k2

Сортировать по полю № 2

-k1n

Числовая сортировка по полю № 1

-k3

Сортировать по полю №3

Last updated