MyTetra Share
Делитесь знаниями!
Как превратить "книжный" текст с переносами слов в одну строку на абзац?
Время создания: 23.03.2023 12:26
Текстовые метки: linux, текст, форматирование, преобразование, перенос, символ, тире, абзац, параграф, блок, строка
Раздел: Компьютер - Linux - Bash - Команды и скрипты
Запись: xintrea/mytetra_syncro/master/base/1679563588kt311j99wj/text.html на raw.github.com

Если имеется "книжный" текст, в котором абзацы разбиты на строки, причем в словах на концах строк могут быть символы переноса, то как превратить такой текст в более "линейный", у которого один абзац - одна строка?


Например, исходный текст:



Это такой текст в котором есть переносы

строк. Причем строки переносятся не толь-

ко на границах слов, но и с помощью сим-

волов переноса (символ "тире").


Каждый абзац отделяется от другого пустой

строкой.



Из него нужно получить текст, в котором один абзац представляет из себя одну строку, вот так:



Это такой текст в котором есть переносы строк. Причем строки переносятся не только на границах слов, но и с помощью символов переноса (символ "тире").


Каждый абзац отделяется от другого пустой строкой.



Какие есть варианты?


Первый вариант команды через потоковый редактор sed:



cat filename.txt | sed ':a;N;$!{/\n$/!ba}; s/[[:blank:]]*\n[[:blank:]]*/ /g; s/-\s//g; G' | sed 's/^[ \t]//' | sed 's/[ \t]$//' > newFilename.txt



Второй вариант команды - через xclip и perl:



cat filename.txt | perl -p -0 -w -e 's/\n\n/<br>/g; s/-\n//g; s/\n/ /g; s/<br>/\n\n/g' > newFilename.txt



На первый взгляд обе команды дают правильный результат, но их надо проверить на более больших текстах.


Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования