Csv 使用别名显示通讯组列表

Csv 使用别名显示通讯组列表,csv,parsing,awk,Csv,Parsing,Awk,我想制作带有通讯组列表(和别名)及其成员的.csv文件。我的输入如下所示 # distributionList zimbradladmins@example.com memberCount=0 zimbraMailAlias: zimbradladmins@example.com zimbraMailAlias: admins@example.com # distributionList monitoring@example.com memberCount=3 zimbraMailAlias:

我想制作带有通讯组列表(和别名)及其成员的.csv文件。我的输入如下所示

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

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

# distributionList all@example.com memberCount=10
zimbraMailAlias: all@example.com
zimbraMailAlias: everyone@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
BEGIN              { FS=":? " ; print "distributionList,member" }
/memberCount=0/    { print $3,"" }
/^# distributionList / { alias = $3 }
$1=="zimbraMailForwardingAddress" { print(alias,$2 ) }
{OFS=","}
我的awk代码如下所示

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

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

# distributionList all@example.com memberCount=10
zimbraMailAlias: all@example.com
zimbraMailAlias: everyone@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
BEGIN              { FS=":? " ; print "distributionList,member" }
/memberCount=0/    { print $3,"" }
/^# distributionList / { alias = $3 }
$1=="zimbraMailForwardingAddress" { print(alias,$2 ) }
{OFS=","}
以及我的输出:

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
all@example.com,Joyous@example.com
all@example.com,helpdesk@special.example.com
all@example.com,Crazy@example.com
all@example.com,Successful@example.com
all@example.com,operator@special.example.com
all@example.com,pawelm@example.com
all@example.com,tomaszb@example.com
all@example.com,wojciech@example.com
all@example.com,wojtekb@example.com
如您所见,我只显示通讯组名称(zimbradladmins@example.com, monitoring@example.com及all@example.com)及其成员。我想显示每个通讯组列表及其成员的所有zimbraMailAlias。 上述数据的最终输出应为(如果没有成员,则逗号后不显示任何内容):


任何帮助都将不胜感激:)

通过添加monit@example.com到预期输出。好的,我刚刚更新了我的答案。通过添加monit@example.com到预期输出。好的,我刚刚更新了我的答案。哇,这个脚本工作得很好!你为我做了一件我非常感激的事情!这是完美的,我没有语言。。。我不知道如何感谢你,但是。。。谢谢:)祝你和你所爱的人一切顺利。保重哇,这个剧本很有魅力!你为我做了一件我非常感激的事情!这是完美的,我没有语言。。。我不知道如何感谢你,但是。。。谢谢:)祝你和你所爱的人一切顺利。保重
$ awk -f tst.awk file
zimbradladmins@example.com,
admins@example.com,
monitoring@example.com,Eatable@example.com
monitoring@example.com,Boorish@example.com
monitoring@example.com,Flawless@example.com
monitor@example.com,Eatable@example.com
monitor@example.com,Boorish@example.com
monitor@example.com,Flawless@example.com
monit@example.com,Eatable@example.com
monit@example.com,Boorish@example.com
monit@example.com,Flawless@example.com
all@example.com,Legal@example.com
all@example.com,Joyous@example.com
all@example.com,helpdesk@special.example.com
all@example.com,Crazy@example.com
all@example.com,Successful@example.com
all@example.com,operator@special.example.com
all@example.com,pawelm@example.com
all@example.com,tomaszb@example.com
all@example.com,wojciech@example.com
all@example.com,wojtekb@example.com
everyone@example.com,Legal@example.com
everyone@example.com,Joyous@example.com
everyone@example.com,helpdesk@special.example.com
everyone@example.com,Crazy@example.com
everyone@example.com,Successful@example.com
everyone@example.com,operator@special.example.com
everyone@example.com,pawelm@example.com
everyone@example.com,tomaszb@example.com
everyone@example.com,wojciech@example.com
everyone@example.com,wojtekb@example.com