Пожалуйста, смотрите изображение:
Какое регулярное выражение удалит все окончания строк только из непустых строк (не удаляя их из пустых строк? Это из текстового файла длиной более 8000 строк.
64-битная Vista.
Пожалуйста, смотрите изображение:
Какое регулярное выражение удалит все окончания строк только из непустых строк (не удаляя их из пустых строк? Это из текстового файла длиной более 8000 строк.
64-битная Vista.
Если вы пытаетесь преобразовать абзацы, у которых есть разрывы строк в конце каждой строки, в непрерывный текст внутри каждого абзаца:
Сейчас настало время для всего хорошего \n
люди, чтобы прийти на помощь их \n
страна \ п
\ п
в
Настало время всем добрым людям прийти на помощь своей стране \n
\ п
Тогда что-то вроде этого должно работать:
sed -n '1{x;d};H;${x;s|\([^\n]\)\n\([^\n]\)|\1 \2|gp}' file
или же
sed ':a;$!N;s|^\n||;s|\n\([^\n]\+\)$| \1|;ta;p;D' file
Мой беспорядочный метод - открыть его словом, найти и заменить на ^ p ^ p (два конечных абзаца подряд) символом, не используемым в файле, например "|". Тогда я заменил бы все ^ p только пробелом. Тогда я бы вернулся и заменил т "|" с ^ р.
Это зависит от того, какой пакет регулярных выражений у вас есть, независимо от того, ожидаете вы или нет.
Я бы лично сделал:
- удалить завершающие пробелы, это гарантирует, что «пустые» строки \n \n
s/^[ \t][ \t]*$//
- если это единственный перевод строки, замените
s/([^\n])\n([^\n])/\1 \2/
это действительно зависит от вашего пакета регулярных выражений
с sed я бы сделал что-то вроде:
sed 's/[ \t]*$//'