Usando sed
e 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.
O script sed insere uma nova linha antes de cada linha que começa com uma letra maiúscula (exceto a primeira linha de entrada). A saída de sed
é então canalizada para fmt
para reformatar os parágrafos resultantes.
Como alternativa, use par
se você tiver instalado. É outro reformatador de parágrafos, mas muito mais capaz do que fmt
, com muitos mais recursos e opções.
Note que haverá uma linha em branco entre cada parágrafo. Os parágrafos devem ser separados uns dos outros por pelo menos uma linha em branco.
Sem as linhas em branco, toda a sua amostra de entrada é reformatada como um único parágrafo com várias frases, por exemplo:
$ fmt input.txt
This is one sentence that is broken. However this is a good one.
And this one is somehow, broken into many.
Se você precisar remover as linhas em branco após a reformatação, direcione-as por sed
novamente, mas isso removerá TODAS as linhas em branco, incluindo todas as que possam estar na entrada original. por exemplo,
$ 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.