Par - отличный инструмент для форматирования текста.

Par объединяет текст и форматирует его до нового размера.

Может ли Par также выравнивать текст без объединения строк?

ре

text text text text
text2 text2 text2 text2
txt txt txt txt txt 

оправдать до 30

text     text     text    text
text2   text2   text2    text2
txt    txt    txt    txt   txt 

Я прочитал руководство, не найдя решения.

1 ответ1

1

Я подозреваю, что самое близкое, что вы можете получить с 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 и кормить 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

Я не могу удержаться от ощущения, что доступно гораздо более элегантное решение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .