У меня есть некоторые данные из вывода ldapsearch, который выглядит следующим образом:
> echo "$OUTPUT"
sn: name1
uid: uname1
mail: user1@mail.com
roomNumber: e2
sn: name2
uid: uname2
mail: user2@mail.com
roomNumber: e2
sn: name3
uid: uname3
roomNumber: e2
sn: name4
uid: uname4
mail: user4@mail.com
roomNumber: e2
Я использую awk, чтобы обработать каждого пользователя в одну строку, чтобы он заканчивался следующим образом:
name1|uname1|user1@mail.com|e2
name2|uname2|user2@mail.com|e2
name3|uname3||e2
name4|uname4|user4@mail.com|e2
Проблема в том, что мой код ниже не может обработать отсутствующий атрибут mail, поэтому он использует переменную предыдущего пользователя и выглядит следующим образом:
name1|uname1|user1@mail.com|e2
name2|uname2|user2@mail.com|e2
name3|uname3|user2@mail.com|e2
name4|uname4|user4@mail.com|e2
Используемая команда awk:
echo "$OUTPUT" | awk -v OFS='|' '{split($0,a,": ")} \
/^sn:/{sn=a[2]} \
/^uid:/{uid=a[2]} \
/^mail:/{mail=a[2]} \
/^roomNumber:/{room=a[2]; print sn, uid, mail, room}'
Есть ли способ обработать отсутствующий атрибут, такой как mail, в приведенном выше примере, пожалуйста?
Спасибо.