我有一个 ldapsearch 查询来提取电子邮件系统的一些数据,我试图将数据解析为可以在表/平面文件中分析的内容,并生成帐户报告。
ldapsearch 输出示例:
# scott, people, example3.org
dn: uid=scott,ou=people,dc=example3,dc=org
zimbraCOSId: 3f5exxxf-08eb-439a-8d93-cef26b03b722
zimbraMailDeliveryAddress: [email protected]
zimbraLastLogonTimestamp: 20161019154312Z
zimbraPrefMailForwardingAddress: [email protected]
# info, people, example5.org
dn: uid=info,ou=people,dc=example5,dc=org
zimbraMailDeliveryAddress: [email protected]
zimbraCOSId: e2zzy7e74-e4bf-462d-a4b1-7d7b23c31fbe
zimbraPrefMailForwardingAddress: [email protected]
zimbraLastLogonTimestamp: 20181011075800Z
用于拉取测试数据的搜索命令:
ldapsearch -H $ldap_master_url -w $zimbra_ldap_password -D $zimbra_ldap_userdn -S -LLL -x "(&(objectClass=zimbraAccount)(!(objectclass=zimbraCalendarResource)))" zimbraMailDeliveryAddress zimbraLastLogonTimestamp zimbraPrefMailForwardingAddress | awk '$1=$1' RS= ORS='\n' OFS=';'
这是我尝试过的:
| awk '$1=$1' RS= ORS='\n' OFS=';'
然后我还使用 grep 进一步修剪它,但并非所有记录都具有相同的属性或相同的顺序,因此输出很混乱。
我正在拍摄的输出:
上述属性的值采用按行分隔样式。
IE:
[email protected],20161019154312Z,[email protected] [email protected],20181011075800Z,[email protected]
将研究 sed 是否可以收集信息,因为记录之间的值顺序不同,这看起来很奇怪。我有更多的数据字段要添加,但很难解析输出。
谢谢
使用 awk 这应该相当简单。这是一个解决方案
您要做的就是使用模式匹配
/.../
并将所需的字段存储在变量中,最后将其打印出来