Мне нужна помощь с нумерацией нужной записи в текстовом файле. Это файл ldif, и он будет около 2 ГБ. Машина обработки unix поэтому я набрал awk. Хотя уже пробовал nl и cat, он выглядит более сложным и awk выглядит хорошо для этой задачи, я знаком с sql, но это не близко к нему :-)Номер строки повторения Unix для каждой группы в файле на основе patern probabelly с awk
Цель состоит в том, чтобы гарантировать числовую уникальность для группы и элементов группы :
- Добавить столбец с повторяющимся номером в каждую строку в группе данных, начиная с атрибута 'dn:' (это может быть номер строки или счетчик строк). Важно то, что она должна быть уникальной среди групп.
- Добавить столбец с инкрементным номером, когда атрибут повторяется.
Вход:
dn: uc=an
version: 12
dn: uid=fcb
uid: ljfhsfff
missdata: at12
missdata: at3
fladata: part2
fladata: part3
fladata: part1
dn: uid=fccb
uid: kjhfa8
missdata: at1
missdata: at8
missdata: at10
missdata: at14
fladata:: a06b6a==
fladata: part3
att: dsc
выход (один из возможных):
1 1 dn: uc=an
1 1 version: 12
2 1 dn: uid=fcb
2 1 uid: ljfhsfff
2 1 missdata: at12
2 2 missdata: at3
2 1 fladata: part2
2 2 fladata: part3
2 3 fladata: part1
3 1 dn: uid=fccb
3 1 uid: kjhfa8
3 1 missdata: at1
3 2 missdata: at8
3 3 missdata: at10
3 4 missdata: at14
3 1 fladata:: a06b6a==
3 2 fladata: part3
3 1 att: dsc
Видел ваши ответы ранее - Вы лучшие. Он работает так, как ожидалось, в linux, но это солярис, поэтому догадка должна заменить delete eltCnt на split ("", array, ":") и, вероятно, правильно использовать nawk? – jareeq
В Solaris вы должны использовать/usr/xpg4/bin/awk, а не nawk (pre-POSIX) и определенно не/bin/awk (старый, сломанный awk). Да, вам НЕОБХОДИМО использовать 'split, ', eltCnt' вместо' delete eltCnt', но сначала попробуйте последний. Вам не понадобится 3rg arg для split(), если вы его использовали. –
Еще раз спасибо Эд, я нашел эту версию вчера и реализовал 'delete'. Тем временем я ознакомился с awk и понял, что могу напрямую привязывать данные от ldif к csv. На основе примеров у меня уже работает скрипт, но, к сожалению, он работает с несколькими атрибутами с таким же именем (как указано выше). Я попытаюсь понять это или задать новый вопрос с тем, что я уже сделал. – jareeq