Многострочный список данных (ldif файл) управление с awk или другим инструментом

Можно попробовать

sysctl -w kern.ipc.maxsockbuf=8000000
sysctl -w net.inet.tcp.sendspace=4000000
sysctl -w net.inet.tcp.recvspace=4000000

но я учел бы предложение от Michael Graff, чтобы Вы включали некоторый возврат и повторить логику в Вашем коде приложения

4
задан 22 August 2011 в 21:43
2 ответа

You can do this with an awk script

#!/bin/awk -f
/^dn:/ {split($0,dname,", dn=");print $0 }
/^cn:/ { cn = $2 }
/^givenName:/ { gn = tolower($2) }
/sn:/ { sn = tolower($2) ; printf("mail: %s.%s@%s.%s\n\n",gn,sn,dname[2],dname[3] ) }

to use, save the above in a file e.g. awkscript and make it executable then

./awkscript datafile

Given your input this script outputs

dn: cn=fremer, ou=people, dn=domain, dn=com
mail: freddy.mercury@domain.com

dn: cn=markno, ou=people, dn=domain, dn=com
mail: mark.knopfler@domain.com
3
ответ дан 3 December 2019 в 03:22

Для многострочных вещей я всегда прибегаю к Perl или чему-то еще, что позволяет мне писать фактические структуры данных в получитаемом виде. Вы действительно можете написать читаемый код Perl; Мне никогда не удавалось прочитать команду awk, если она превышает пару десятков символов. Я вовсе не говорю, что это невозможно; Я просто не знаю, как это сделать.

Дополнительным преимуществом Perl является то, что вы можете найти (или уже имеете) модуль LDAP / LDIF, так что вам не придется разбирать его самостоятельно. Потенциальным недостатком Perl является необходимость выбора одного из этих модулей. Как правило, лучше всего будет начинать все, что имеет в названии слово «Простой».

2
ответ дан 3 December 2019 в 03:22

Теги

Похожие вопросы