Eu suspeito que o mais próximo que você pode obter com par
é usar a opção j1
em conjunto com um valor w
muito bem escolhido.
De link
j[<just>] If <just> is 1, par justifies the OP, inserting spaces
between words so that all lines in the OP have length
<width> (except the last, if <last> is 0). Defaults to
0. (See also the w, l, and f options.)
par
se comporta de forma pathalogicamente com o texto do seu exemplo, acho que ele detecta incorretamente um prefixo de linha.
$ cat test2.txt
text text text text
text2 text2 text2 text2
txt txt txt txt txt
O melhor que pude sair foi
$ ./par -w23 -j1 -p0 -h0 <test2.txt
text text text text
text2 text2 text2 text2
txt txt txt txt txt
Acho que eu tentaria perl
, talvez com Texto: : Autoformatar e alimentar autoformat
uma linha por vez.
Essa ideia me levou ao bastante feio mas bastante eficaz
$ perl -pe 's/$/\r\n123456789 123456789 123456789 /;' test2.txt| \
> ./par -w30 -j1 -l1 -p0 -h0 | \
> perl -ne 'print unless /^123456789 123456789 123456789 $/'
text text text text
text2 text2 text2 text2
txt txt txt txt txt
Não consigo deixar de pensar que uma solução muito mais elegante está disponível.