Как извлечь строки из текста в другой текст - PullRequest
0 голосов
/ 26 июня 2018

Это сложно и искал несколько часов, я не могу найти ничего полезного: (

Мне все равно, как это сделать, powershell, batch, npp ++ или любое программное обеспечение, но это то, что яхочу сделать:

У меня есть текстовый файл text1.txt с 2888 строками. Есть еще один файл text2.txt с 3440 строками, но во втором файле уже 2888 точных строк, чем в первом файле.

Итак, я хочу «удалить» эти 2888 строк моего text1.txt из text2.txt, оставив только остальные строки «уникальными».

Ответы [ 4 ]

0 голосов
/ 27 июня 2018

Установка CudaText редактор.Установить в нем плагин Сортировать через меню Плагины / AddonManager / Установить.

  • открыть файл1 на 1-й вкладке
  • открыть файл2 на 2-й вкладке
  • создайте новую вкладку (3-ю) и вставьте в нее первые 2 вкладки (на 1-й вкладке: выберите «Все», «Копировать», затем на 3-й вкладке: «Вставить»)
  • на этой 3-й вкладке (заполненной) выполните команду «Выбрать все»
  • Плагин сортировки вызова: пункт меню «Плагины / Сортировка / Удаление повторяющихся строк + происхождение»
  • 3-я вкладка имеет результат
0 голосов
/ 26 июня 2018

Это две строки в пакете;Вы можете использовать findstr для сравнения двух файлов.

findstr /V /G:text1.txt /L /X text2.txt >text3.txt
move /y text3.txt text2.txt

/G получает строки поиска из text1.txt
/V возвращает все , за исключением этих строк
/L указывает, что строки в text1.txt должны восприниматься буквально, а не как регулярное выражение (это необходимо только в том случае, если в ваших строках содержатся символы, используемые регулярным выражением, такие как [ и ] или $)
/X соответствует полным строкам, поэтому «камень» не будет выбран «одним», например

Данные сохраняются во временном файле, так как перенаправление сразу на text2.txt стираетфайл.После создания временного файла move перезаписывает старый файл, а /y делает это, не спрашивая, действительно ли вы хотите перезаписать файл.

0 голосов
/ 26 июня 2018

Решение PowerShell отсутствует, поэтому попробуйте следующее:

## Q:\Test\2018\06\26\SO51033576.ps1
$text1 = Get-Content `.\text1.txt
$text2 = Get-Content `.\text2.txt
(Compare-Object $text2 $text1 | Where-Object sideindicator -eq '<=').Inputobject|
    Set-Content '.\new-text2.txt'
0 голосов
/ 26 июня 2018

Используя notepad ++, вы можете легко это сделать.

Вам необходимо скопировать данные text1.txt в text2.txt на блокноте ++.

После объединения вы можете использовать это регулярное выражение (> Notepad ++ 6) в диалоге поиска и замены:

^(.*?)$\s+?^(?=.*^\1$)

и заменить ничем.Это оставляет из всех повторяющихся строк последнее вхождение в файл.Необходимо проверить параметры «Регулярное выражение» и «. Соответствует новой строке»:

...