Команды 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
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
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
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
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
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
2
3
4
5
Вывести только уникальные строки можно и командой sort
с параметром -u
.
user@debian-server:~/test$ cat names.txt | sort -u
alica
bob
patrik
stive
1
2
3
4
5
2
3
4
5