Как вычесть строки из двух файлов с помощью nodepad ++? - PullRequest
0 голосов
/ 29 марта 2019

У меня есть два файла (A и B), и я хочу вычесть строки B из A.

То есть с учетом этих файлов:

FiLea:

line1
line2
line3
line4

и файл B:

line2
line4

результат будет:

line1
line3

Строки разделены по всему файлу, они не совпадают друг с другом.

Как мне сделать этот блокнот с ++?

1 Ответ

1 голос
/ 29 марта 2019

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

Представьте файл "A" со следующими строками:

abc
def
ghi
jkl
mno
pqr
stu
vwx

и подлежащий удалению файл "B" со следующими строками:

abc
mno
vwx

Объедините их в один файл и разделите содержимое как минимум на 20 @, например:

abc
def
ghi
jkl
mno
pqr
stu
vwx

@@@@@@@@@@@@@@@@@@@@

abc
mno
vwx

Теперь примените это регулярное выражение:

Поиск: ^([^\n\r]+)\R(?=[\s\S]+^@{20,}$[\s\S]*^\1$)

Заменить на (nothing)

Метод поиска: regular expression

Заменить все

Результат будет:

def
ghi
jkl
pqr
stu

@@@@@@@@@@@@@@@@@@@@

abc
mno
vwx

Теперь просто удалите содержимое второго файла.

Важно:

Чтобы это работало, вам нужен «уникальный» разделитель, который невозможно найти ни в одном из двух файлов. Я использовал @@@@@@@@@@@@@@@@@@@@ для этой цели, но если вы чувствуете, что это можно найти в другом месте, решение следует изменить, чтобы использовать какой-то другой разделитель (как для объединения файлов, так и для использования регулярного выражения)

...