Команды sort и uniq в Linux

sort

Команда sort сортирует входящую последовательность строк.

user@debian-server:~/test$ cat lines.txt 
bob
alica
stive
patrik
user@debian-server:~/test$ cat lines.txt | sort
alica
bob
patrik
stive
1
2
3
4
5
6
7
8
9
10

Параметр -r сортирует в обратном порядке

user@debian-server:~/test$ cat lines.txt | sort -r
stive
patrik
bob
alica
1
2
3
4
5

Параметр -n заставляет sort правильно сортировать цифры.

user@debian-server:~/test$ cat numbers.txt 
20
4
1
100
15
33
user@debian-server:~/test$ cat numbers.txt | sort
1
100
15
20
33
4
user@debian-server:~/test$ cat numbers.txt | sort -n
1
4
15
20
33
100
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

uniq

Команда uniq возвращает только уникальные строки из входящего потока, но она распознает одинаковые строки только если ни идут друг за другом. Поэтому перед уникализацей строки нужно отсортировать.

user@debian-server:~/test$ cat names.txt 
bob
alica
bob
stive
patrik
alica
alica
user@debian-server:~/test$ cat names.txt | uniq
bob
alica
bob
stive
patrik
alica
user@debian-server:~/test$ cat names.txt | sort | uniq
alica
bob
patrik
stive
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Можно вывести только строки которые встречались один раз.

user@debian-server:~/test$ cat names.txt | sort | uniq -u
patrik
stive
1
2
3

Или добавить в вывод количество повторений

user@debian-server:~/test$ cat names.txt | sort | uniq -c
      3 alica
      2 bob
      1 patrik
      1 stive
1
2
3
4
5

Вывести только уникальные строки можно и командой sort с параметром -u.

user@debian-server:~/test$ cat names.txt | sort -u
alica
bob
patrik
stive
1
2
3
4
5
Последниее изменение: 02.12.2023, 16:08:47