Объединить разделенные строки с определенным символом в конце строки

Объединить разделенные строки с определенным символом в конце строки

Мне нужно соединить две строки. Одна из них имеет точку конца, указывающую на предыдущую в текстовом примере:

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*$"на ""(без кавычек).

Связанный контент