Если имеется "книжный" текст, в котором абзацы разбиты на строки, причем в словах на концах строк могут быть символы переноса, то как превратить такой текст в более "линейный", у которого один абзац - одна строка?
Например, исходный текст:
Это такой текст в котором есть переносы
строк. Причем строки переносятся не толь-
ко на границах слов, но и с помощью сим-
волов переноса (символ "тире").
Каждый абзац отделяется от другого пустой
строкой.
Из него нужно получить текст, в котором один абзац представляет из себя одну строку, вот так:
Это такой текст в котором есть переносы строк. Причем строки переносятся не только на границах слов, но и с помощью символов переноса (символ "тире").
Каждый абзац отделяется от другого пустой строкой.
Какие есть варианты?
Первый вариант команды через потоковый редактор 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
На первый взгляд обе команды дают правильный результат, но их надо проверить на более больших текстах.