Как анализировать данные Zimbra в CSV - PullRequest
0 голосов
/ 01 октября 2019

У меня нет опыта работы с языком awk, но мне нужно преобразовать некоторые данные (список рассылки Zimbra и его члены) в формат CSV. Мои данные выглядят так:

# distributionList zimbradladmins@example.com memberCount=0
zimbraMailAlias: zimbradladmins@example.com

# distributionList monitoring@example.com memberCount=3
zimbraMailAlias: monitoring@example.com
zimbraMailForwardingAddress: Eatable@example.com
zimbraMailForwardingAddress: Boorish@example.com
zimbraMailForwardingAddress: Flawless@example.com

# distributionList all@example.com memberCount=10
zimbraMailAlias: all@example.com
zimbraMailForwardingAddress: Legal@example.com
zimbraMailForwardingAddress: Joyous@example.com
zimbraMailForwardingAddress: helpdesk@special.example.com
zimbraMailForwardingAddress: Crazy@example.com
zimbraMailForwardingAddress: Successful@example.com
zimbraMailForwardingAddress: operator@special.example.com
zimbraMailForwardingAddress: pawelm@example.com
zimbraMailForwardingAddress: tomaszb@example.com
zimbraMailForwardingAddress: wojciech@example.com
zimbraMailForwardingAddress: wojtekb@example.com

Чего я хочу достичь в выводе:

distributionList,member
zimbradladmins@example.com,
monitoring@example.com,Eatable@example.com
monitoring@example.com,Boorish@example.com
monitoring@example.com,Flawless@example.com
all@example.com,Legal@example.com
and so on...

Как вы можете видеть, есть DL без каких-либо членов (zimbradladmins@example.com),Если это так, в CSV-файле не должно быть значения. Буду признателен за вашу помощь:)

1 Ответ

0 голосов
/ 01 октября 2019

Использование awk и использование строки комментария над желаемыми электронными письмами:

awk -F':? ' '
   BEGIN{print "distributionList,member"}         # print header
   /memberCount=0/{print $3,""}                   # print mail alias without user email
   /^# distributionList /{a=$3}                   # store mail alias
   $1=="zimbraMailForwardingAddress"{print a,$2}  # print mail alias and user email
' OFS=, file

Обратите внимание, что скрипт также выводит строку zimbradladmins@example.com,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...