Команды 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
Параметр -r
сортирует в обратном порядке
user@debian-server:~/test$ cat lines.txt | sort -r
stive
patrik
bob
alica
Параметр -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
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
Можно вывести только строки которые встречались один раз.
user@debian-server:~/test$ cat names.txt | sort | uniq -u
patrik
stive
Или добавить в вывод количество повторений
user@debian-server:~/test$ cat names.txt | sort | uniq -c
3 alica
2 bob
1 patrik
1 stive
Вывести только уникальные строки можно и командой sort
с параметром -u
.
user@debian-server:~/test$ cat names.txt | sort -u
alica
bob
patrik
stive