Мне нужно соединить две строки. Одна из них имеет точку конца, указывающую на предыдущую в текстовом примере:
line1:hello
line2:goodbye.
Мне нужно изменить его на:
line1: hello goodbye.
Мне нужно удалить каждую третью строку (кратную 3, например, 3,6,9,12,15,18,21,... строки) этого огромного текста.
Вот что я хочу сделать.
Первое задание:
проверьте каждую строку
если заканчивается точкой,
.
перейдите на следующую строку,если она не заканчивается точкой,
.
присоедините следующую строку к текущей.
Каждая строка не имеет номера строки, они начинаются с обычных слов.
Второе задание
с самого начала каждая 3-я строка - мусор и ее следует удалить
первое задание также должно быть выполнено, потому что в некоторых частях 3-е предложение разделено на 2 строки, поэтому сначала мне нужно полностью соединить строку, разделенную на 2 строки, а затем выполнить второе задание.
Я использую Windows 7. Я умею пользоваться Notepad++ и UltraEdit.
решение1
Первое заданиеЯ бы сделал в Notepad++, используя регулярное выражение поиска и замены:
- Откройте «Поиск» > «Заменить...»
- В поле «Найти:» введите
"([^\.])\r\n"
(без кавычек)- Значение регулярного выражения: Найдите строку, которая заканчивается на что-то, отличное от «.»
- Примечание: если документ имеет окончания файлов Linux, необходимо использовать просто «\n» вместо «\r\n».
- В поле «Заменить на:» введите
"\1 "
(без кавычек; не забудьте также скопировать пробел после «\1») - В качестве «Режима поиска» выберите «Регулярное выражение».
- Нажмите «Заменить все».
Вход:
hello
goodbye.
hello
hello
goodbye.
hello.
goodbye.
Выход:
hello goodbye.
hello hello goodbye.
hello.
goodbye.
Theвторая задачаможно сделать с помощью еще более длинного регулярного выражения:
- Откройте «Поиск» > «Заменить...»
- В поле «Найти:» введите
"(([^\r\n]*\r\n){2})[^\r\n]*\r\n"
(без кавычек)- Значение регулярного выражения: Найти блок из трех строк.
- Примечание: Опять же, если документ имеет окончания файлов Linux, необходимо использовать просто «\n» вместо «\r\n».
- В поле «Заменить на:» введите
"\1"
(без кавычек) - В качестве «Режима поиска» выберите «Регулярное выражение».
- Нажмите «Заменить все».
Вход:
hello goodbye.
hello hello goodbye.
sdlfj sdgf.
hello.
goodbye.
(/%&/$&=)?)=´?&%.
goodbye goodbye.
bye.
sldfjsdökl.
hello.
Выход:
hello goodbye.
hello hello goodbye.
hello.
goodbye.
goodbye goodbye.
bye.
hello.
Примечание:
В обоих примерах я предполагал, что нет завершающего пробела. Если он есть, вам нужно сначала его удалить, например, заменив regex (как выше) "\s*$"
на ""
(без кавычек).