Я подозреваю, что ближайший вы можете получить с par
это использовать j1
вариант в сочетании с очень тщательно выбранным w
значение.
От http://www.nicemice.net/par/par-doc.var
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
ведет себя довольно патологически с вашим примером текста, я думаю, что он неправильно определяет префикс строки.
$ cat test2.txt
text text text text
text2 text2 text2 text2
txt txt txt txt txt
Лучшее, что я мог из этого получить, было
$ ./par -w23 -j1 -p0 -h0 <test2.txt
text text text text
text2 text2 text2 text2
txt txt txt txt txt
Думаю попробую perl
с возможно Text :: Автоформат и кормить autoformat
по одной строке за раз.
Эта идея привела меня к довольно некрасивым, но довольно эффективным
$ 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
Я не могу не чувствовать, что доступно гораздо более элегантное решение.
par 30j1
но это не дает ожидаемых результатов. Это все еще соединяет линии.