egorius: (Default)
egorius ([personal profile] egorius) wrote2016-12-24 12:11 am

В поисках форматтера

Пребываю в тихом шоке. На дворе вроде XXI век, а для линукса нет стандартного форматтера, который подровнял бы текст под заданную ширину, и при этом работал бы с UTF-8.

По возможностям меня прекрасно устраивает fmt, но он русские буквы считает за две. Вроде бы par должен уметь UTF-8, но взятый из репозитория Убунты с этим тоже не справился.

Как же так? Наверное, я просто чего-то не знаю?

[identity profile] pigdeon.livejournal.com 2016-12-23 09:22 pm (UTC)(link)
Сдается мне, что это [опять] желание странного(тм). Используй текстовый редактор, или браузер, например.

[identity profile] egorius.livejournal.com 2016-12-23 11:36 pm (UTC)(link)
Мне надо унутре скрипта это сделать. И наличие fold, fmt и прочего говорит о том, что не такое уж это и странное желание. Но не поддерживать в наше время UTF?..

[identity profile] electrodyssey.livejournal.com 2016-12-24 07:07 am (UTC)(link)
Ой до чего же интерсно! Предлагаю "админовский" путь решения, смешной, но вроде рабочий, у меня заработало на убунту 16.04.

cat russian_utf8article.txt | iconv -f utf-8 -t cp1251 | par w80 | iconv -f cp1251 -t utf-8 > output.txt

Подсмотрел в интернете, кто-то видимо уже успел побиться фейсом о тейбл:
http://vim.wikia.com/wiki/Par_text_reformatter

[identity profile] d-byzero.livejournal.com 2016-12-24 08:46 am (UTC)(link)
А и правда! Остроумный вариант!
(Я, правда, тоже не очень понимаю, зачем в XXI веке нужно так текст форматировать ;-))

[identity profile] egorius.livejournal.com 2016-12-24 08:59 am (UTC)(link)
Ну, пока не научились передавать мысли на расстоянии, форматирование текста иногда пригождается (:
Edited 2016-12-24 09:00 (UTC)

[identity profile] d-byzero.livejournal.com 2016-12-25 02:55 pm (UTC)(link)
Я какбэ догадываюсь. Но в наш век пропорциональных шрифтов, когда символ '\n' отмечает конец абзаца...

[identity profile] egorius.livejournal.com 2016-12-25 05:56 pm (UTC)(link)
В консольке-то все моноширинное даже в наш век. Мне на консоль надо текст выводить изнутри скрипта, в режиме живой демонстрации.

[identity profile] d-byzero.livejournal.com 2016-12-25 08:56 pm (UTC)(link)
Да я уж понял

[identity profile] egorius.livejournal.com 2016-12-24 08:56 am (UTC)(link)
Дык, именно так пока и пришлось сделать, но такой костыль!..

[identity profile] electrodyssey.livejournal.com 2016-12-24 10:35 am (UTC)(link)
зато работает, а пурист бы написал патч под par, но лень матушка :)

[identity profile] egorius.livejournal.com 2016-12-24 10:44 am (UTC)(link)
Патч вроде как уже давно написан и лежит на просторах, но собирать это руками и таскать потом за собой неохота.

[identity profile] electrodyssey.livejournal.com 2016-12-24 10:28 pm (UTC)(link)
:) да, понимаю

[identity profile] hardsign.livejournal.com 2016-12-24 06:29 am (UTC)(link)
Locale правильно выставлена?

[identity profile] hardsign.livejournal.com 2016-12-24 06:31 am (UTC)(link)
Ну, и если всё правильно, "а включаешь - не работает", используй iconv

[identity profile] egorius.livejournal.com 2016-12-24 09:09 am (UTC)(link)
Выставлена, да.
Ну iconv-то понятно, его и прикрутил, но XXI век!

[identity profile] hardsign.livejournal.com 2016-12-24 09:28 am (UTC)(link)
Как тут выше товарищи отметили, в XXI веке есть xml, html, docx, odt... И вдруг форматирование текста?

[identity profile] egorius.livejournal.com 2016-12-24 10:49 am (UTC)(link)
Задача специфическая, для учебных курсов. Мне надо показывать, как работают всякие команды. Чтобы не набирать их руками в консольке, сделан скрыпт, который в нужных местах делает паузу. Ну и комментарии надо выводить тоже, чтобы самому не забыть, о чем речь. И вот комментарии я хочу аккуратно форматировать перед выводом.