Поиск и удаление строк из файла

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Ответить
qwerty
Сообщения: 22
Зарегистрирован: Вт май 26, 2009 20:41

Поиск и удаление строк из файла

Сообщение qwerty »

Есть два txt файла. В первом пару тысяч строк, во втором тысяча строк.
Задача - взять первую строку из второго файла и найти ее в первом файле.
Если нашли, то удалить эту строку из первого файла, далее берем следующую строку из второго файла и опять ищем ее в первом файле.
Если не нашли, то берем следующую строку из второго файла и ищем ее в первом файле.
Т.е. надо все строки из второго файла попытаться найти в первом файле и в случае успеха удалить их оттуда.

Помню как-то требовалось такое, но не помню как решалось. ВРоде тотал коммандером и решалось, однако не помню как.

Подскажите как эту задачу решить.
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

qwerty
Сообщения: 22
Зарегистрирован: Вт май 26, 2009 20:41

Сообщение qwerty »

LonerD писал(а):qwerty
TextCrawler
Что-то там нет поиска из файла. ?

Добавлено спустя 16 минут:

Сделал с помощью пакета.
LonerD спасибо, очень полезная программка )
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

qwerty
Таких программ со списками несколько. Что за пакет?

Код: Выделить всё

' Удалить в файле строки, взятые из другого файла
' Параметры: "<путь к файлу со списком для чтения>" "<Путь к редактируемому файлу>"
'==================================================================================
With WScript.Arguments
  If .Count < 2 Then
    WScript.Echo "Не указаны все параметры!" : WSCript.Quit
  End If : RList = .Item(0) : WList = .Item(1)  
End With

With CreateObject("Scripting.FileSystemObject")
  Set File = .GetFile(WList) : Text = File.OpenAsTextStream(1, -2).ReadAll
  For Each F in Split(.GetFile(RList).OpenAsTextStream(1, -2).ReadAll, vbNewLine)
    If Trim(F) <> "" Then
      Text = Replace(Text, F & vbNewLine, "") : Text = Replace(Text, vbNewLine & F, "")
    End If
  Next : File.OpenAsTextStream(2, -2).Write Text : Set File = Nothing
End With : WScript.Quit
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Ответить