Zimbra サーバーからデータをエクスポートしたいのですが、新しい行ごとにデータがエクスポートされます。コマンドは次のとおりです。
zmprov -l gaa -v domain.com | grep -e "zimbraForeignPrincipal: " -e "zimbraTwoFactorAuthEnabled: " -e "^mail: "
しかし、結果は次のようになります:
email:
zimbraForeignPrincipal:
zimbraTwoFactorAuthEnabled
関連する属性を含むメールを 1 行にまとめる方法はありますか?
答え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
印刷されます。