И fmt
, и par
являются хорошими инструментами для повторного -форматирования текста.
Оба они могут использоваться для переформатирования текста в одну длинную строку после замены перевода строки пробелами (, например. сtr
):
$ tr '\n' ' ' < input.txt | fmt -w 999
I cannot conceive that anybody will require multiplications at the rate of 40,000 or even 4,000 per hour... -- F. H. Wales (1936)
$ tr '\n' ' ' < input.txt | par w999
I cannot conceive that anybody will require multiplications at the rate of 40,000 or even 4,000 per hour... -- F. H. Wales (1936)
Обратите внимание, что вывод функций fmt и par немного отличается. fmt имеет четыре пробела между ...
и --
, а par сводит их к одному пробелу.
Подробнее о fmt
иpar
:
fmt
— это стандартная утилита, которая существует уже несколько десятилетий и должна быть доступна практически в любой системе unix. В системах GNU/Linux он находится в пакете GNU coreutils
.
$ fmt < input.txt
I cannot conceive that anybody will require multiplications at the rate
of 40,000 or even 4,000 per hour...
-- F. H. Wales (1936)
Тем не менее, он очень прост и не позволяет в значительной степени контролировать способ переформатирования абзацев, а также не выполняет какой-либо специальной обработки начальных и/или конечных символов (, например >
цитирования в электронной почте или /*... */
комментарии ), что может привести к беспорядку.
par
гораздо более гибок и функционален. Он может переформатировать комментарии и текст в рамках стиля C /*... */
, сообщения электронной почты с несколькими уровнями цитирования и многое другое. Следующий пример не показывает, на что он действительно способен.
$ par < input.txt
I cannot conceive that anybody will require multiplications at the rate of
40,000 or even 4,000 per hour...
-- F. H. Wales (1936)
Следующий пример (изman par
)начинает показывать возможности par
:
Before:
John writes:
: Mary writes:
: + Anastasia writes:
: + > Hi all!
: + Hi Ana!
: Hi Ana & Mary!
Please unsubscribe me from alt.hello.
After "par Q+:+ q":
John writes:
: Mary writes:
:
: + Anastasia writes:
: +
: + > Hi all!
: +
: + Hi Ana!
:
: Hi Ana & Mary!
Please unsubscribe me from alt.hello.
Я использую его ежедневно из vi/vim с тех пор, как открыл для себя 1990-е годы, чтобы переформатировать электронные письма, которые я пишу (или электронные письма от других с нечитаемыми длинными строками ), комментариями к коду и другим текстом. ИМО, номинал обязателен, должен -иметь программу.