1

Я написал небольшую программу для анализа вывода командной строки hg log , которая выглядит примерно так:

changeset:   90:abcdef012345
tag:         tip
user:        me
date:        Sat Apr 30 17:42:05 2011 -0700
summary:     Made another change

changeset:   89:def012345abc
user:        me
date:        Sat Apr 30 16:52:19 2011 -0700
summary:     Made a change

На самом деле, моя программа достаточно универсальна для анализа любых пар «ключ: значение», если каждая новая запись отделена пустой строкой.

Теперь я хочу сойти с ума и попробовать запустить его с некоторыми другими (реальными) данными. Есть ли другая программа, которая генерирует данные «ключ: значение», как это?

1 ответ1

0

С помощью двух команд, tr и sed, вы можете преобразовать его в более похожий на запись формат:

echo 'changeset:   90echo 'changeset:   90:abcdef012345
tag:         tip
user:        me
date:        Sat Apr 30 17:42:05 2011 -0700
summary:     Made another change

changeset:   89:def012345abc
user:        me
date:        Sat Apr 30 16:52:19 2011 -0700
summary:     Made a change
' | tr '\n' ';' | sed 's/;;/\n/' 
changeset:   90:abcdef012345;tag:         tip;user:        me;date:        Sat Apr 30 17:42:05 2011 -0700;summary:     Made another change
changeset:   89:def012345abc;user:        me;date:        Sat Apr 30 16:52:19 2011 -0700;summary:     Made a change;;

Однако, если это ваш формат, я бы подошел к более CSV-подобному формату. Вам не нужно повторять заголовок в каждом ряду и с вкладками вместо ';' или ',' (если вам не нужны вкладки в качестве содержимого), вы получаете формат, который очень удобен для анализа вручную, сравнения строк, поиска строк с помощью grep и создания графиков с помощью LibreOffice или для размещения данных. в базу данных.

Если у вас более изменчивый формат, xml может быть лучше - не по сути, а потому, что существует так много инструментов.

В главе 5 ESR, в которой написано «Искусство программирования на Unix, возможно, вы найдете вдохновение для своей работы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .