есть мозговзрывная задачка на знание баша и инструментов работы с текстом (будь
то 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

Дати відповідь електронним листом