Посмотрите man hexdump (опция -e). 21 января 2011 г. 23:49 пользователь dimas <[email protected]> написал: > есть мозговзрывная задачка на знание баша и инструментов работы с текстом > (будь > то 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 > [email protected] > https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru >
-- Dmitry Agafonov ~ http://agafonov.pp.ru/ -- ubuntu-ru mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru
