[решено] Файл фиксированной ширины строк ([ответ — man] стандартными утилитами)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

liaonau
Сообщения: 390
ОС: gentoo

[решено] Файл фиксированной ширины строк

Сообщение liaonau »

Преамбула: Я купил плеер iriver e150, который позволяет читать текстовые файлы, но читалка мягко говоря ужасна. Она не умеет форматировать текст. Ширина строки, допустим, 20 символов, 21й просто переносится на следующую. Читать та
ким образо
м сложно.
Амбула: Можно использовать fold -s -w 20 file.txt, но это не панацея, т.к. тогда справа остается «лесенка» пустого места. Надо бы эти строчки, которые меньше 20 символов, разрядить пробелами примерно так:

Код:

Однажды Андрей Васильевич шел по улице и потерял часы. Вскоре после этого он умер.

Есть ли какая-нибудь стандартная утилита реализующая это, или же придется использовать perl?
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: [решено] Файл фиксированной ширины строк

Сообщение t.t »

{ echo ".TH Заголовок"; cat файл; } | MANWIDTH=20 man -p t -l - >файл2
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: [решено] Файл фиксированной ширины строк

Сообщение drBatty »

liaonau писал(а):
20.02.2011 23:29
т.к. тогда справа остается «лесенка» пустого места. Надо бы эти строчки, которые меньше 20 символов, разрядить пробелами примерно так:

http://drbatty.ru/sed/ch04s07.html
кстати, ещё vim так умеет, gqap
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: [решено] Файл фиксированной ширины строк

Сообщение ZyX »

drBatty писал(а):
21.02.2011 09:55
liaonau писал(а):
20.02.2011 23:29
т.к. тогда справа остается «лесенка» пустого места. Надо бы эти строчки, которые меньше 20 символов, разрядить пробелами примерно так:

http://drbatty.ru/sed/ch04s07.html
кстати, ещё vim так умеет, gqap

Чему равны настройки formatprg и formatexpr? Сам Vim так не умеет.
Спасибо сказали:
liaonau
Сообщения: 390
ОС: gentoo

Re: [решено] Файл фиксированной ширины строк

Сообщение liaonau »

ZyX писал(а):
21.02.2011 19:05
Сам Vim так не умеет.

Да, у меня получается как с fmt — по левому краю. Да и вообще vim не подходящий инструмент — подходящий это script.sh file.txt и файл отформатирован, конвертирован в cp1251 и скопирован на плеер.

drBatty писал(а):
21.02.2011 09:55
http://drbatty.ru/sed/ch04s07.html

Ну вот примерно такое я замыслил было писать на perl.
Спасибо сказали:
liaonau
Сообщения: 390
ОС: gentoo

Re: [решено] Файл фиксированной ширины строк

Сообщение liaonau »

t.t писал(а):
21.02.2011 08:02
{ echo ".TH Заголовок"; cat файл; } | MANWIDTH=20 man -p t -l - >файл2

Спасибо. Это работает, правда не через конвейер и опция -l не известна.
P.S. Все же наверное придется perl подключать: это же ужас какие разные текстовые файлы бывают, к примеру на lib.ru. То тире это --, то в каждой строке начальный пробел… Или fb2 парсить.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: [решено] Файл фиксированной ширины строк

Сообщение t.t »

liaonau писал(а):
21.02.2011 19:43
t.t писал(а):
21.02.2011 08:02
{ echo ".TH Заголовок"; cat файл; } | MANWIDTH=20 man -p t -l - >файл2

Спасибо. Это работает, правда не через конвейер и опция -l не известна.

А --local-file тоже не работает? Эта опция задаёт вместо имени man-страницы конкретный путь к файлу (а - это стандартный ввод), возможно в gentoo это иначе делается?

liaonau писал(а):
21.02.2011 19:43
P.S. Все же наверное придется perl подключать: это же ужас какие разные текстовые файлы бывают, к примеру на lib.ru. То тире это --, то в каждой строке начальный пробел… Или fb2 парсить.

Я бы всякие нестандартности убрал sed-ом, а затем отформатировал man-ом. На мой взгляд, это куда проще перла.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
liaonau
Сообщения: 390
ОС: gentoo

Re: [решено] Файл фиксированной ширины строк

Сообщение liaonau »

t.t писал(а):
21.02.2011 20:02
А --local-file тоже не работает? Эта опция задаёт вместо имени man-страницы конкретный путь к файлу (а - это стандартный ввод), возможно в gentoo это иначе делается?

man, версия 1.6f
Использование: man [-adfhktwW] [раздел] [-M путь] [-P просмотрщик] [-S список]
[-m система] [-p строка] название ...
И --local-file тоже нет.
t.t писал(а):
21.02.2011 20:02
Я бы всякие нестандартности убрал sed-ом, а затем отформатировал man-ом. На мой взгляд, это куда проще перла.

При форматировании man-ом (это действительно проще — потому я и спросил) perl будет использоваться с ключом -p только для s///, а на мой субъективный взгляд регулярные выражения perl могут убрать ”более нестандартные” нестандартности.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5404
ОС: Gentoo

Re: [решено] Файл фиксированной ширины строк

Сообщение /dev/random »

По поводу манов. Есть две достаточно популярные в линукс-дистрибутивах реализации команды man:
1) http://primates.ximian.com/~flucifredi/man/
2) http://www.nongnu.org/man-db/
Как правило, в дистрибутивах доступны обе, но по-умолчанию в debian ставится вторая, а в gentoo - первая. Отсюда и несоответствие опций.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: [решено] Файл фиксированной ширины строк

Сообщение t.t »

liaonau писал(а):
21.02.2011 20:22
t.t писал(а):
21.02.2011 20:02
Я бы всякие нестандартности убрал sed-ом, а затем отформатировал man-ом. На мой взгляд, это куда проще перла.

При форматировании man-ом (это действительно проще — потому я и спросил) perl будет использоваться с ключом -p только для s///, а на мой субъективный взгляд регулярные выражения perl могут убрать ”более нестандартные” нестандартности.

Это да. В частности, гораздо проще обрабатывать нестандартности, которые могут быть разбиты на несколько строк.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: [решено] Файл фиксированной ширины строк

Сообщение t.t »

/dev/random писал(а):
21.02.2011 20:42
По поводу манов. Есть две достаточно популярные в линукс-дистрибутивах реализации команды man:
1) http://primates.ximian.com/~flucifredi/man/
2) http://www.nongnu.org/man-db/
Как правило, в дистрибутивах доступны обе, но по-умолчанию в debian ставится вторая, а в gentoo - первая. Отсюда и несоответствие опций.

Но у первой, наверное, тоже есть возможность отформатировать произвольный файл и, в частности, стандартный ввод?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5404
ОС: Gentoo

Re: [решено] Файл фиксированной ширины строк

Сообщение /dev/random »

t.t писал(а):
21.02.2011 21:49
Но у первой, наверное, тоже есть возможность отформатировать произвольный файл и, в частности, стандартный ввод?

Произвольный файл - без проблем. Достаточно, чтобы в имени присутствовал символ '/'. Стандартный ввод - не пробовал (и сейчас не попробую, я давно поставил себе второй вариант), но, наверное, сработает /dev/stdin
Спасибо сказали:
liaonau
Сообщения: 390
ОС: gentoo

Re: [решено] Файл фиксированной ширины строк

Сообщение liaonau »

/dev/random писал(а):
21.02.2011 22:08
t.t писал(а):
21.02.2011 21:49
Но у первой, наверное, тоже есть возможность отформатировать произвольный файл и, в частности, стандартный ввод?

Произвольный файл - без проблем. Достаточно, чтобы в имени присутствовал символ '/'. Стандартный ввод - не пробовал (и сейчас не попробую, я давно поставил себе второй вариант), но, наверное, сработает /dev/stdin

Да, так работает, проверил. Но, поставив только что man-db, я обнаружил что в нем нет этого идиотизма с русскими кодировками (Ставить: ebuild unpack, конвертировать из KOI8-R сообщения, ebuild merge. Пользоваться:nroff | iconv). Оставлю man-db, спасибо за подсказку.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: [решено] Файл фиксированной ширины строк

Сообщение drBatty »

liaonau писал(а):
21.02.2011 19:37
Ну вот примерно такое я замыслил было писать на perl.

во первых я уже написал, во вторых, у перла проблемы с русскими буквами (в моих кривых руках).
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: