1

Тема: Как удалить одинаковые слова?

Есть два документа с текстом (многостраничные документы, или большие текстовые файлы). Надо сделать так, чтобы в первом
файле остались только те слова, которых нет во втором, а во втором файле остались только те слова, которых нет в первом.
...
Например, в первом файле: мама папа бабушка дедушка
Во втором файле: мама брат сестра бабушка дедушка
...
Нужно сделать, чтобы файлы стали иметь такое содержание:
Первый файл: папа
Второй файл: брат сестра
...
То есть, из обоих файлов удаляются одинаковые слова, принадлежащие обоим файлам, оставляя лишь неповторяющиеся,
а удаляемые слова (одинаковые) нужно записать в третий файл.
Тогда, третий файл, согласно примеру выше, будет таким:
мама бабушка дедушка
...
Может быть есть макрос (программа или скрипт), которые бы работали подобным образом (без ввода искомых слов вручную)?
...
Чтобы работало под Windows.
...
Спасибо всем, кто пытается помочь.

2

Re: Как удалить одинаковые слова?

vadim19 пишет:

Может быть есть макрос (программа или скрипт), которые бы работали подобным образом (без ввода искомых слов вручную)?
.

Может, я  ошибаюсь  (тогда компетентные товарищи поправят), но программы для решения вашей специфической проблемы нет.

Все существующие программы сравнения файлов  предназначены,   как правило, для визуального сравнения
(текстов программ, версий документов и т. п.). Несовпадения (различия) выделяются цветом.
К тому же ваша проблема не сводится к сравнению файлов.
Вам надо писать  собственную программу.
Алгоритм примерно следующий:
1 Составляете  отсортированный список (без дубликатов) всех слов первого документа.
2 Аналогично для второго документа.
3 Далее в цикле:
- берете очередное слово из первого списка и   проверяете, есть ли оно во втором списке.
Если да,  удаляете из обоих списков и  помещаете его в выходной файл совпадающих слов. 
Если нет, ничего не делаете, переходите к следующему слову.

3

Re: Как удалить одинаковые слова?

ЮВ пишет:

1 Составляете  отсортированный список (без дубликатов) всех слов первого документа.
2 Аналогично для второго документа.
3 Далее в цикле:
- берете очередное слово из первого списка и   проверяете, есть ли оно во втором списке.
Если да,  удаляете из обоих списков и  помещаете его в выходной файл совпадающих слов. 
Если нет, ничего не делаете, переходите к следующему слову.

Спабисо, ЮВ.
1 и 2  пункты я умею делать. У меня даже есть для этих целей рабочие и макросы и скрипты,  я ими постоянно пользуюсь. Здесь проблем не будет. А вот с третьим пунктом, если можно подробнее расскажите, как сделать.

4

Re: Как удалить одинаковые слова?

vadim19 пишет:

1 и 2  пункты я умею делать. У меня даже есть для этих целей рабочие и макросы и скрипты,  я ими постоянно пользуюсь. Здесь проблем не будет. А вот с третьим пунктом, если можно подробнее расскажите, как сделать.

Имхо,   третий пункт проще всего реализуется с помощью какой-нибудь СУБД.
В БД надо будет  создать две таблицы и загрузить в них  списки слов из пункта 1 и 2.
Потом с помощью простых SQL-запросов можно будет выбирать интересующую информацию, например,
список   одинаковых слов
select  tab1.слово from tab1, tab2 where tab1.слово=tab2.слово;
Подобными запросами можно  получить список слов, присутствующих в  первом документе  и отсутствующих во втором,
и наоборот,  иcключить совпадающие слова  и т. п.

5

Re: Как удалить одинаковые слова?

Есть идея склеить все в один документ разделив, например, разрывом страницы/раздела. Где-то так:
  текст документа 1
  - разрыв -
  текст документа 2
  - разрыв -
  здесь будут удаленные (одинаковые) слова
Тогда можно обойтись поиском и заменой. Например, чтобы вырезать одинаковые слова из первых двух частей и поместить в третью, надо в цикле гонять такой поиск:
  найти: (<[0-9A-Za-zА-ЯЁа-яё]@>)(*^m*)<\1>(*^m)
  заменить:  \2\3\1^13
  подстановочные знаки: да
Но надо учесть что одинаковых слов может быть не 1+1, а и 1+2, 3+2 и т.д. Сначала надо удалить лишние.

Макросы под заказ и готовый пакет - mtdmacro.ru

6

Re: Как удалить одинаковые слова?

Спасибо, ребят, буду пробовать. Вот только я не знаю ни поисковых запросов, ни языков программирования, в том виде, в каком их надо бы знать. Я типа методом тыка делал. Но у меня получилось. Просто осталось малость, которую я не могу понять. Ну ладно, спасибо.
С уважением.

7

Re: Как удалить одинаковые слова?

ЮВ пишет:

Потом с помощью простых SQL-запросов можно будет выбирать интересующую информацию, например,
список   одинаковых слов
select  tab1.слово from tab1, tab2 where tab1.слово=tab2.слово;

Я так понял это Ворд??
если да то пожалуйста приведите пример Ваших слов, я думал, что такого в Ворде нет

8

Re: Как удалить одинаковые слова?

Вождь пишет:

найти: (<[0-9A-Za-zА-ЯЁа-яё]@>)(*^m*)<\1>(*^m)
  заменить:  \2\3\1^13

Вы об этом скрипте говорите:

Sub Macro1()

'специальные символы и подстановочные знаки
'в операциях поиска и замены MS Word 97/2000/XP
'http://artefact.lib.ru/design/text_khozyainov.shtml
'регулярное выражение - это образец текста
'который состоит из обычных символов и/или специальных метасимволов, описание:
'http://www.script-coding.com/WSH/RegExp.html#4
'http://www.script-coding.info/WSH/RegExp.html

'поиск и замена во всём документе
With ActiveDocument.Content.Find
'найти:
.Text = "(<[0-9A-Za-zА-ЯЁа-яё]@>)(*^m*)<\1>(*^m)"
'заменить:
.Replacement.Text = "\2\3\1^13"
'эта опция отвечает за поиск с использованием подстановочных знаков
'не работает когда установлено в положение False, или её нет вообще
'если установлена в положение True, тогда работает
.MatchWildcards = True
'заменить все
.Execute Replace:=wdReplaceAll
End With

End Sub

Я спорить не буду просто на 2010 вроде не работает???
Но я в нём особо не освоился

9

Re: Как удалить одинаковые слова?

Ципихович Эндрю пишет:

Я так понял это Ворд??

Нет, вы не так поняли.
Это конструкция  не WORD, а любой реляционной СУБД, в БД которой предлагалось загрузить списки слов из документов.

10

Re: Как удалить одинаковые слова?

я говорю судя из ТС автора

Есть два документа с текстом (многостраничные документы, или большие текстовые файлы). Надо сделать так, чтобы в первом
файле остались только те слова, которых нет во втором, а во втором файле остались только те слова, которых нет в первом.
...
Например, в первом файле: мама папа бабушка дедушка
Во втором файле: мама брат сестра бабушка дедушка
...
Нужно сделать, чтобы файлы стали иметь такое содержание:
Первый файл: папа
Второй файл: брат сестра

ДА ЭТО Ж ВОРД!!!!!!!!!!
нет?? как Ваше детише прикручивать