Поля и параметры сортировки
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