Re: помогите извратиться (форматирование текста)

Dmitry Agafonov agafonovdmitry на gmail.com
Пт Янв 21 21:02:08 UTC 2011


Посмотрите man hexdump (опция -e).

21 января 2011 г. 23:49 пользователь dimas <dimas000 на ya.ru> написал:
> есть мозговзрывная задачка на знание баша и инструментов работы с текстом (будь
> то awk, sed или что еще поможет в этом случае). сразу скажу - не из конкурса, а
> из самой что ни на есть жизни. не спрашивайте зачем, но вот надо оно мне.
> итак, имеем некий текст. например, такой кусок (в содержание не вникайте, не в
> нем суть):
> ============
> Нечто был занят архивацией разума, а потому не заметил приближающегося к планете
> объекта. ему, как архивариусу, не дозволялось потерпеть утрату важных данных,
> поэтому один раз в цепкурский год он сохранял полное содержимое своей базы
> данных и отсылал полученный бэкап на защищенный сервер где-то в другом измерении
> вселенной.
> =============
> и вот из него (текста на входе будет гораздо больше) требо получить такое чудо
> (здесь стоит смотреть в моноширинном виде, иначе все криво поедет):
> ============
> 0001 Не чт о  бы л  за ня т  ар хи ва ци ей  р аз у
> 0002 ма ,  а  по то му  н е  за ме ти л  пр иб ли ж
> 0003 аю ще го ся  к  п ла не те  о бъ ек та .  ем у
> 0004 ,  ка к  ар хи ва ри ус у,  н е  до зв ол ял о
> .....
> 00C4 ....
> ....
> 012E ....
> ============
> здесь первая колонка - 4-значный номер строки в hex-виде, далее идет следующее:
> весь входной текст разбивается на строки по 32 символа, плюя на выпадающие в
> начало/конец строк пробелы и пр., т.е. железко 1 строка = 32 знака. абзацное
> деление при этом стоит сохранить, т.е. короткие строки оставляем, следующей
> абзац начинаем с новой строки и опять по 32, и т.д.
> после чего каждая строка из 32-х символов разбиватся на группы по 2 знака,
> которые разделяются проблеом. грубо говоря, через каждые 2 символа вставляется
> пробел. таким образом, каждая строка - 16 групп по 2 символа. на оригинальные
> проблелы, опять же, плюем.
> собственно, провозился немного с первой частью - разбивкой на строки. fmt
> разбивает с переносом по словам, что не нужно. от pr я ничего толкового не
> добился. fold делает все правильно, только почему-то с кириллицей у него
> проблемы - в рэндомных местах в начале строк непечатные символы вместо первой
> буквы. взодной поток, естественно, в utf8. если даешь текст из латиницы - все
> нормально.
> в общем, знающие люди, помогите кто чем сможет. где-то я видел фичу баша в виде
> разделения текстовой переменной на диапазоны символов, только вот не помню, как
> она юзается, в мане сходу не нашел. или мб все реализуемо с помощью awk/sed?
> любые мысли приветствуются)))
>
> --
> ubuntu-ru mailing list
> ubuntu-ru на lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru
>



-- 
Dmitry Agafonov ~ http://agafonov.pp.ru/


Подробная информация о списке рассылки ubuntu-ru