我想從 zimbra 伺服器導出數據,但它是在每個新行中導出數據,我的命令:
zmprov -l gaa -v domain.com | grep -e "zimbraForeignPrincipal: " -e "zimbraTwoFactorAuthEnabled: " -e "^mail: "
但結果看起來像:
email:
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
最後,列印變數。