Как найти повторяющиеся данные в текстовом файле Linux с помощью uniq

Как найти повторяющиеся данные в текстовом файле Linux с помощью uniq

Вы когда-нибудь сталкивались с текстовыми файлами с повторяющимися строками и повторяющимися словами? Возможно, вы регулярно работаете с выводом команд и хотите отфильтровать их для отдельных строк. Когда дело доходит до текстовых файлов и удаления избыточных данных в Linux, команда uniq - ваш лучший выбор.





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





Что такое команда uniq?

Команда uniq в Linux используется для отображения идентичных строк в текстовом файле. Эта команда может быть полезна, если вы хотите удалить повторяющиеся слова или строки из текстового файла. Поскольку команда uniq сопоставляет соседние строки для поиска избыточных копий, она работает только с отсортированными текстовыми файлами.





К счастью, вы можете Сортировать команда с uniq, чтобы организовать текстовый файл способом, совместимым с командой. Помимо отображения повторяющихся строк, команда uniq также может подсчитывать появление повторяющихся строк в текстовом файле.

Как использовать команду uniq

Существуют различные параметры и флаги, которые вы можете использовать с uniq. Некоторые из них являются базовыми и выполняют простые операции, такие как печать повторяющихся строк, в то время как другие предназначены для опытных пользователей, которые часто работают с текстовыми файлами в Linux.



Базовый синтаксис

Базовый синтаксис команды uniq:

uniq option input output

...куда вариант флаг, используемый для вызова определенных методов команды, Вход текстовый файл для обработки, и выход - это путь к файлу, в котором будет храниться вывод.





В выход аргумент является необязательным и может быть пропущен. Если пользователь не указывает входной файл, uniq берет данные из стандартного вывода в качестве входных. Это позволяет пользователю передавать uniq через другие команды Linux .

Пример текстового файла

Мы будем использовать текстовый файл duplicate.txt как вход для команды.





127.0.0.1 TCP
127.0.0.1 UDP
Do catch this
DO CATCH THIS
Don't match this
Don't catch this
This is a text file.
This is a text file.
THIS IS A TEXT FILE.
Unique lines are really rare.

Обратите внимание, что мы уже отсортировали этот текстовый файл с помощью Сортировать команда. Если вы работаете с другим текстовым файлом, вы можете отсортировать его, используя следующую команду:

sort filename.txt > sorted.txt

Удалить повторяющиеся линии

Самое простое использование uniq - удалить повторяющиеся строки из ввода и распечатать уникальный вывод.

uniq duplicate.txt

Выход:

Обратите внимание, что система не отображает второе вхождение строки Это текстовый файл . Кроме того, вышеупомянутая команда печатает только уникальные строки в файле и не влияет на содержимое исходного текстового файла.

Подсчет повторяющихся строк

Чтобы вывести количество повторяющихся строк в текстовом файле, используйте -c флаг с командой по умолчанию.

uniq -c duplicate.txt

Выход:

Система отображает количество строк в текстовом файле. Вы видите, что линия Это текстовый файл встречается в файле два раза. По умолчанию команда uniq чувствительна к регистру.

Чтобы печатать только повторяющиеся строки из текстового файла, используйте -D флаг. В -D означает Дубликат .

uniq -D duplicate.txt

Система отобразит вывод следующим образом.

This is a text file.
This is a text file.

Пропуск полей при проверке дубликатов

Если вы хотите пропустить определенное количество полей при сопоставлении строк, вы можете использовать -f флаг с командой. В -f означает Поле .

Рассмотрим следующий текстовый файл fields.txt .

192.168.0.1 TCP
127.0.0.1 TCP
354.231.1.1 TCP
Linux FS
Windows FS
macOS FS

Чтобы пропустить первое поле:

uniq -f 1 fields.txt

Выход:

192.168.0.1 TCP
Linux FS

Вышеупомянутая команда пропустила первое поле (IP-адреса и имена ОС) и сопоставила второе слово (TCP и FS). Затем он отображал первое вхождение каждого совпадения в качестве вывода.

Игнорировать символы при сравнении

Как и при пропуске полей, вы также можете пропускать символы. В -s Флаг позволяет вам указать количество символов, которые нужно пропустить при сопоставлении повторяющихся строк. Эта функция помогает, когда данные, с которыми вы работаете, представлены в виде следующего списка:

какое лучшее бесплатное приложение для фильмов
1. First
2. Second
3. Second
4. Second
5. Third
6. Third
7. Fourth
8. Fifth

Чтобы игнорировать первые два символа (нумерацию списков) в файле list.txt :

uniq -s 2 list.txt

Выход:

В приведенном выше выводе первые два символа были проигнорированы, а остальные были сопоставлены с уникальными строками.

Проверьте количество первых N символов на наличие дубликатов

В Флаг позволяет проверять на наличие дубликатов только фиксированное количество символов. Например:

uniq -w 2 duplicate.txt

Вышеупомянутая команда будет соответствовать только первым двум символам и будет печатать уникальные строки, если таковые имеются.

Выход:

Удалить чувствительность к регистру

Как упоминалось выше, uniq чувствителен к регистру при сопоставлении строк в файле. Чтобы игнорировать регистр символов, используйте вариант с командой.

uniq -i duplicate.txt

Вы увидите следующий результат.

Обратите внимание на вывод выше, uniq не отображал строки СДЕЛАЙТЕ ЭТО а также ЭТО ТЕКСТОВЫЙ ФАЙЛ .

Отправить вывод в файл

Чтобы отправить вывод команды uniq в файл, вы можете использовать Перенаправление вывода ( > ) следующим образом:

uniq -i duplicate.txt > otherfile.txt

При отправке вывода в текстовый файл система не отображает вывод команды. Вы можете проверить содержимое нового файла, используя Кот команда.

cat otherfile.txt

Вы также можете использовать другие способы отправить вывод командной строки в файл в Linux .

Анализ повторяющихся данных с помощью uniq

Большую часть времени при управлении серверами Linux вы будете либо работать на терминале, либо редактировать текстовые файлы. Следовательно, знание того, как удалить избыточные копии строк в текстовом файле, может стать большим подспорьем для вашего набора навыков работы с Linux.

Работа с текстовыми файлами может быть неприятной, если вы не знаете, как фильтровать и сортировать текст в файле. Чтобы упростить вашу работу, в Linux есть несколько команд редактирования текста, таких как sed а также awk которые позволяют эффективно работать с текстовыми файлами и выводами командной строки.

Делиться Делиться Твитнуть Эл. адрес Эти 10 примеров Sed сделают вас опытным пользователем Linux

Хотите стать опытным пользователем Linux? Знакомство с sed поможет. Учитесь на этих 10 примерах sed.

Читать далее
Похожие темы
  • Linux
  • Linux
Об авторе Дипеш Шарма(Опубликовано 79 статей)

Дипеш - младший редактор Linux в MUO. Он пишет информационные руководства по Linux, стремясь доставить удовольствие всем новичкам. Не уверен насчет фильмов, но если вы хотите поговорить о технологиях, он ваш парень. В свободное время он может читать книги, слушать разные музыкальные жанры или играть на гитаре.

Ещё от Deepesh Sharma

Подписывайтесь на нашу новостную рассылку

Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!

Нажмите здесь, чтобы подписаться
Категория Linux