Использование sed
и fmt
:
$ sed -e '1n; s/^[[:upper:]]/\n&/' input.txt | fmt
This is one sentence that is broken.
However this is a good one.
And this one is somehow, broken into many.
Сценарий sed вставляет новую строку перед каждой строкой, которая начинается с заглавной буквы (за исключением самой первой строки ввода). sed
Затем выводится fmt
результат, чтобы переформатировать результирующие абзацы.
В качестве альтернативы используйте, par
если он у вас установлен. Это еще одно средство переформатирования абзацев, но гораздо более функциональное, чем fmt
с множеством других функций и опций.
Обратите внимание, что между каждым абзацем будет пустая строка. Параграфы должны быть отделены друг от друга хотя бы одной пустой строкой. Без пустых строк весь ваш входной образец переформатируется как один абзац из нескольких предложений, например:
$ fmt input.txt
This is one sentence that is broken. However this is a good one.
And this one is somehow, broken into many.
Если вам нужно удалить пустые строки после переформатирования, просто передайте их sed
снова, но это удалит ВСЕ пустые строки, включая те, которые могли быть в исходном вводе. например
$ sed -e '1n; s/^[[:upper:]]/\n&/' input.txt | fmt | sed -e '/^$/d'
This is one sentence that is broken.
However this is a good one.
And this one is somehow, broken into many.