Преамбула: Я купил плеер iriver e150, который позволяет читать текстовые файлы, но читалка мягко говоря ужасна. Она не умеет форматировать текст. Ширина строки, допустим, 20 символов, 21й просто переносится на следующую. Читать та
ким образо
м сложно.
Амбула: Можно использовать fold -s -w 20 file.txt, но это не панацея, т.к. тогда справа остается «лесенка» пустого места. Надо бы эти строчки, которые меньше 20 символов, разрядить пробелами примерно так:
Код:
Однажды Андрей
Васильевич шел по
улице и потерял часы.
Вскоре после этого он
умер.
Есть ли какая-нибудь стандартная утилита реализующая это, или же придется использовать perl?
Да, у меня получается как с fmt — по левому краю. Да и вообще vim не подходящий инструмент — подходящий это script.sh file.txt и файл отформатирован, конвертирован в cp1251 и скопирован на плеер.
{ echo ".TH Заголовок"; cat файл; } | MANWIDTH=20 man -p t -l - >файл2
Спасибо. Это работает, правда не через конвейер и опция -l не известна.
P.S. Все же наверное придется perl подключать: это же ужас какие разные текстовые файлы бывают, к примеру на lib.ru. То тире это --, то в каждой строке начальный пробел… Или fb2 парсить.
{ echo ".TH Заголовок"; cat файл; } | MANWIDTH=20 man -p t -l - >файл2
Спасибо. Это работает, правда не через конвейер и опция -l не известна.
А --local-file тоже не работает? Эта опция задаёт вместо имени man-страницы конкретный путь к файлу (а - это стандартный ввод), возможно в gentoo это иначе делается?
P.S. Все же наверное придется perl подключать: это же ужас какие разные текстовые файлы бывают, к примеру на lib.ru. То тире это --, то в каждой строке начальный пробел… Или fb2 парсить.
Я бы всякие нестандартности убрал sed-ом, а затем отформатировал man-ом. На мой взгляд, это куда проще перла.
А --local-file тоже не работает? Эта опция задаёт вместо имени man-страницы конкретный путь к файлу (а - это стандартный ввод), возможно в gentoo это иначе делается?
man, версия 1.6f
Использование: man [-adfhktwW] [раздел] [-M путь] [-P просмотрщик] [-S список]
[-m система] [-p строка] название ...
И --local-file тоже нет.
Я бы всякие нестандартности убрал sed-ом, а затем отформатировал man-ом. На мой взгляд, это куда проще перла.
При форматировании man-ом (это действительно проще — потому я и спросил) perl будет использоваться с ключом -p только для s///, а на мой субъективный взгляд регулярные выражения perl могут убрать ”более нестандартные” нестандартности.
По поводу манов. Есть две достаточно популярные в линукс-дистрибутивах реализации команды man:
1) http://primates.ximian.com/~flucifredi/man/
2) http://www.nongnu.org/man-db/
Как правило, в дистрибутивах доступны обе, но по-умолчанию в debian ставится вторая, а в gentoo - первая. Отсюда и несоответствие опций.
Я бы всякие нестандартности убрал sed-ом, а затем отформатировал man-ом. На мой взгляд, это куда проще перла.
При форматировании man-ом (это действительно проще — потому я и спросил) perl будет использоваться с ключом -p только для s///, а на мой субъективный взгляд регулярные выражения perl могут убрать ”более нестандартные” нестандартности.
Это да. В частности, гораздо проще обрабатывать нестандартности, которые могут быть разбиты на несколько строк.
По поводу манов. Есть две достаточно популярные в линукс-дистрибутивах реализации команды man:
1) http://primates.ximian.com/~flucifredi/man/
2) http://www.nongnu.org/man-db/
Как правило, в дистрибутивах доступны обе, но по-умолчанию в debian ставится вторая, а в gentoo - первая. Отсюда и несоответствие опций.
Но у первой, наверное, тоже есть возможность отформатировать произвольный файл и, в частности, стандартный ввод?
Но у первой, наверное, тоже есть возможность отформатировать произвольный файл и, в частности, стандартный ввод?
Произвольный файл - без проблем. Достаточно, чтобы в имени присутствовал символ '/'. Стандартный ввод - не пробовал (и сейчас не попробую, я давно поставил себе второй вариант), но, наверное, сработает /dev/stdin
Но у первой, наверное, тоже есть возможность отформатировать произвольный файл и, в частности, стандартный ввод?
Произвольный файл - без проблем. Достаточно, чтобы в имени присутствовал символ '/'. Стандартный ввод - не пробовал (и сейчас не попробую, я давно поставил себе второй вариант), но, наверное, сработает /dev/stdin
Да, так работает, проверил. Но, поставив только что man-db, я обнаружил что в нем нет этого идиотизма с русскими кодировками (Ставить: ebuild unpack, конвертировать из KOI8-R сообщения, ebuild merge. Пользоваться:nroff | iconv). Оставлю man-db, спасибо за подсказку.