Можно попробовать
sysctl -w kern.ipc.maxsockbuf=8000000
sysctl -w net.inet.tcp.sendspace=4000000
sysctl -w net.inet.tcp.recvspace=4000000
но я учел бы предложение от Michael Graff, чтобы Вы включали некоторый возврат и повторить логику в Вашем коде приложения
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
Для многострочных вещей я всегда прибегаю к Perl или чему-то еще, что позволяет мне писать фактические структуры данных в получитаемом виде. Вы действительно можете написать читаемый код Perl; Мне никогда не удавалось прочитать команду awk, если она превышает пару десятков символов. Я вовсе не говорю, что это невозможно; Я просто не знаю, как это сделать.
Дополнительным преимуществом Perl является то, что вы можете найти (или уже имеете) модуль LDAP / LDIF, так что вам не придется разбирать его самостоятельно. Потенциальным недостатком Perl является необходимость выбора одного из этих модулей. Как правило, лучше всего будет начинать все, что имеет в названии слово «Простой».