我想从 zimbra 服务器导出数据,但是它会在每一行都导出数据,我的命令是:
zmprov -l gaa -v domain.com | grep -e "zimbraForeignPrincipal: " -e "zimbraTwoFactorAuthEnabled: " -e "^mail: "
但结果如下所示:
电子邮件:
zimbraForeignPrincipal:
zimbraTwoFactorAuthEnabled
有没有办法将电子邮件与相关属性放在一行中?
答案1
使用 awk:
zmprov -l gaa -v domain.com | \
grep -e "zimbraForeignPrincipal: " -e "zimbraTwoFactorAuthEnabled: " -e "^mail: " |\
awk '{delim=(NR%2?"\n":" ");txt=(NR==1?"":txt delim) $0}END{print txt}'
它执行以下操作:
- 根据当前行号设置分隔符:如果是奇数,则分隔符为换行符,如果是偶数,则分隔符为空格(这是部分
delim=(NR%2?"\n":" ")
)。 - 将所有行收集到名为 的变量中
txt
。每行前面都添加变量本身(即迄今为止收集的行)和上一点的分隔符,除非这是第一行,在这种情况下,将添加一个空字符串(部分txt=(NR==1?"":txt delim) $0
) - 最后,
txt
打印该变量。