Как найти повторяющиеся строки в текстовом файле
Перейти к содержимому

Как найти повторяющиеся строки в текстовом файле

  • автор:

Как найти все повторяющиеся и не повторяющиеся строки в файлах

Как найти все повторяющиеся и не повторяющиеся строки в файлах

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

В Linux

Ищем НЕ ПОВТОРЯЮЩИЕСЯ строки (уникальные)

Допустим у нас есть два текстовых файла: Содержимое файла file1.txt

aaa bbb ccc ddd eee fff ggg

Содержимое файла file2.txt

bbb aaa ccc eee 111 222 ddd xxx

Для того, чтобы найти все уникальные строки в файле file1.txt (т.е. те строки, которые не содержатся в файле file2.txt) можно воспользоваться следующей командой:

cat file1.txt | grep -v -f file2.txt

Результат выполнения данной команды будет таким:

fff ggg

Как мы видим в результате выполнения данной команды выводятся только те строки, которые уникальны в файле file1.txt и которых нет в файле file2.txt Для того, чтобы найти все уникальные строки в файле file2.txt (т.е. те строки, которые не содержатся в файле file1.txt) можно воспользоваться следующей командой:

cat file2.txt | grep -v -f file1.txt

Результат выполнения данной команды будет таким:

111 222 xxx

Ищем ПОВТОРЯЮЩИЕСЯ строки (дубликаты)

Допустим у нас есть два текстовых файла:
Содержимое файла file1.txt

aaa bbb ccc ddd eee fff ggg

Содержимое файла file2.txt

bbb aaa ccc eee 111 222 ddd xxx

Для того, чтобы найти все повторяющиеся строки (дубликаты) в файлах file1.txt и file2.txt можно воспользоваться следующей командой:

cat file1.txt | grep -f file2.txt

Результат выполнения данной команды будет таким:

aaa bbb ccc ddd eee

Как найти дубликаты строк в текстовом файле

Как найти дубликаты строк в текстовом файле

Для поиска дубликатов строк в текстовом файле можно воспользоваться следующей командой:

sort filename.txt | uniq -d

Где filename.txt — это название текстового файла в котором мы ищем дубликаты строк.
В случае, если в данном файле есть одинаковые строки, в консоль будут выведены эти строки и можно будет вручную их убрать из файла.

Была ли эта статья Вам полезна?

Что в статье не так? Пожалуйста, помогите нам её улучшить!

Поиск одинаковых строк в текстовом файле

Нужно посчитать все повторяющиеся строки что расположены в текстовом файле и вывести отчет в Memo1. Результат должен получится в Memo1 такой:

+Результат - 4 раза +Ошибка - 2 раза 

То есть посчитать все одинаковые строки что есть в текстовом файле и статистику вывести в Memo1. Предоставленный код работает быстро но вот при размерах файла в 600 мегабайт выдает сообщение о нехватке памяти. Ну это и понятно потому как мы все грузим в память.

procedure TForm1.Button1Click(Sender: TObject); var TS: TStringList; s, OneWord: string; i, Cnt: integer; begin TS := TStringList.Create; TS.Delimiter := '+'; TS.LoadFromFile('baza.txt'); s := TS.Text; TS.DelimitedText := s; if TS.Count = 0 then begin ShowMessage('Вообще ни одного слова нет!'); Exit; end; TS.Sort; Memo1.Lines.Clear; // подготовим место для формирования отчёта // собственно подсчёт OneWord := TS.Strings[0]; Cnt := 1; for i := 1 to TS.Count - 1 do if AnsiUpperCase(TS.Strings[i]) = AnsiUpperCase(OneWord) then inc(Cnt) else begin Memo1.Lines.Append(OneWord + '+' + InttoStr(Cnt)); OneWord := TS.Strings[i]; Cnt := 1; end; // для последнего слова в списке вывод результата Memo1.Lines.Append(OneWord + '+' + InttoStr(Cnt)); FreeAndNil(TS); // освободим память end; 

Пробовала оформить код через AssignFile — чтение построчно но у меня тут ошибки. Помогите исправить ?

var TS: TStringList; s,st: string; i, Cnt: integer; f1: TextFile; begin Memo1.Lines.Clear; // подготовим место для формирования отчёта // Открываем диалог выбора файла if not OpenDialog1.Execute then exit else AssignFile(f1, OpenDialog1.FileName); reset(f1); TS := TStringList.Create; TS.Delimiter := '+'; s := TS.Text; TS.DelimitedText := s; TS.Sort; if TS.Count = 0 then begin ShowMessage('Вообще ни одного слова нет!'); exit; end; While not EOF(f1) do begin // Что бы программа не подвисала Application.ProcessMessages(); readln(f1, st); TS.Add(st); // собственно подсчёт st := TS.Strings[0]; Cnt := 1; for i := 1 to TS.Count - 1 do if AnsiUpperCase(TS.Strings[i]) = AnsiUpperCase(st) then inc(Cnt) else begin Memo1.Lines.Append(st + '-' + InttoStr(Cnt)); st := TS.Strings[i]; Cnt := 1; end; // для последнего слова в списке вывод результата Memo1.Lines.Append(st + '-' + InttoStr(Cnt)); FreeAndNil(TS); // освободим память end; TS.Free; CloseFile(f1); end; 

Как найти одинаковые строки в любом тексте

Как найти одинаковые строки в любом тексте

Для этого идем по пути:
— Стили/условное форматирование/правила выделения ячеек/повторяющиеся значения.
Далее у нас спросят каким цветом выделить одинаковые строки или значения. После чего повторяющиеся ячейки можно будет быстро и удобно отсортировать.

2. Как найти одинаковые строки с помощью программы Notepad++.

Часто возникает необходимость удаления повторяющихся строк при обработке объемных текстовых документов.
Это простая, как может показаться, операция заставляет не один час искать специальные решения, отдельные программы или использовать функции MS Exel по сортировке и выборке уникальных значений. Что описано выше.

Есть более простой и удобный способ найти одинаковые строки используя бесплатный супер мега текстовый редактор Notepad++.

Найти одинаковые строки с помощью этой замечательной программы можно в два клика.

1. Итак, открываем ваш текстовый документ в программе Notepad++.
2. Выделяем весь текст (Ctrl+A)
3. Идем в меню TextFX -> TextFX Tools -> Sort lines case insensitive

При этом должна стоять галочка возле пункта “Sort outputs only UNIQUE lines”.

Результат, после нажатия «Sort lines case insensitive» – мы получаем отсортированные строки без повторов и дублей.

К примеру если у вас по тексту разбросано 10 одинаковых строк, то останется 1. Или если много строк имеют по несколько повторов то, останутся каждая по одной, без дублей.

Теперь при необходимости можно легко скопировать и вставить готовые строки в Exel или куда угодно.

Если у вас нет, то скачать Notepad++ можно на нашем сайте без вирусов и абсолютно бесплатно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *