Если вы пользователь Linux, и ваша работа связана с работой с текстовыми файлами и строками и их использованием, то вы должны быть уже знакомы с командой uniq, поскольку она наиболее часто используется в этой области.
Для тех, кто не знаком с командой uniq, это инструмент командной строки, который используется для сообщения или опускания повторяющихся строк.
Он в основном фильтрует соседние совпадающие строки от INPUT (или стандартного ввода) и записывается в OUTPUT (или стандартный вывод).
Без параметров соответствующие линии объединяются.
Ниже приведено несколько примеров использования команды uniq.
1) Опустить дубликаты
Выполнение команд uniq без указания каких-либо параметров просто пропускает дубликаты и отображает уникальный вывод строки.
fluser@fvm:~/Documents/files$cat file1 Hello Hello How are you? How are you? Thank you Thank you fluser@fvm:~/Documents/files$ uniq file1 Hello How are you? Thank you
2) Отображение числа повторяющихся строк
С параметром -c можно просмотреть количество повторяющихся строк в файле
fluser@fvm:~/Documents/files$ cat file1 Hello Hello How are you? How are you? Thank you Thank you fluser@fvm:~/Documents/files$ uniq -c file1 2 Hello 2 How are you? 2 Thank you
3) Вывод только дубликатов
Используя параметр -d, мы можем выбрать только те строки, которые были дублированы внутри файла
fluser@fvm:~/Documents/files$ cat file1 Hello Hello Good morning How are you? How are you? Thank you Thank you Bye fluser@fvm:~/Documents/files$ uniq -d file1 Hello How are you? Thank you
4) Игнорировать регистр
Обычно, когда вы используете команду uniq, учитывается регистр.
Но если вы хотите игнорировать случай, вы можете использовать параметр -i
fluser@fvm:~/Documents/files$ cat file1 Hello hello How are you? How are you? Thank you thank you fluser@fvm:~/Documents/files$ uniq file1 Hello hello How are you? Thank you thank you fluser@fvm:~/Documents/files$ uniq -i file1 Hello How are you? Thank you
5) Вывести только уникальные строки
Если вы хотите увидеть только уникальные строки в файле, вы можете использовать параметр -u
fluser@fvm:~/Documents/files$ cat file1 Hello Hello Good morning How are you? How are you? Thank you Thank you Bye fluser@fvm:~/Documents/files$ uniq -u file1 Good morning Bye
6) Сортировка и поиск дубликатов
Иногда дубликаты записей могут содержаться в разных местах файлов.
В этом случае, если мы просто используем команду uniq, она не будет обнаруживать эти повторяющиеся записи в разных строках.
В этом случае нам сначала нужно отсортировать файл, а затем найти дубликаты
fluser@fvm:~/Documents/files$ cat file1 Adam Sara Frank John Ann Matt Harry Ann Frank John fluser@fvm:~/Documents/files$ sort file1 | uniq -c 1 Adam 2 Ann 2 Frank 1 Harry 2 John 1 Matt 1 Sara
7) Сохранить вывод в другом файле
Вывод нашей команды uniq можно просто сохранить в другом файле, как показано ниже.
fluser@fvm:~/Documents/files$ cat file1 Hello Hello How are you? Good morning Good morning Thank you fluser@fvm:~/Documents/files$ uniq -u file1 How are you? Thank you fluser@fvm:~/Documents/files$ uniq -u file1 output fluser@fvm:~/Documents/files$ cat output How are you? Thank you
8) Игнорировать буквы
Чтобы игнорировать несколько символов в начале, вы можете использовать параметр -s, но вам нужно указать количество символов, которые нужно игнорировать
fluser@fvm:~/Documents/files$ cat file1 1apple 2apple 3pears 4banana 5banana fluser@fvm:~/Documents/files$ uniq -s 1 file1 1apple 3pears 4banana