Ich möchte Daten vom Zimbra-Server exportieren, aber in jeder neuen Zeile werden Daten exportiert. Mein Befehl:
zmprov -l gaa -v domain.com | grep -e "zimbraForeignPrincipal: " -e "zimbraTwoFactorAuthEnabled: " -e "^mail: "
aber das Ergebnis sieht folgendermaßen aus:
E-Mail:
zimbraForeignPrincipal:
zimbraTwoFactorAuthEnabled
Gibt es eine Möglichkeit, E-Mails mit zugehörigen Attributen in einer Zeile zu haben?
Antwort1
Verwenden Sie 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}'
Es hat folgende Funktion:
- Legt das Trennzeichen basierend auf der aktuellen Zeilennummer fest: Wenn sie ungerade ist, ist das Trennzeichen ein Zeilenumbruch, wenn sie gerade ist, ist das Trennzeichen ein Leerzeichen (dies ist der
delim=(NR%2?"\n":" ")
Teil). - Sammelt alle Zeilen in einer Variable namens
txt
. Jeder Zeile wird die Variable selbst (also die bisher gesammelten Zeilen) und das Trennzeichen vom vorherigen Punkt vorangestellt, es sei denn, dies ist die erste Zeile. In diesem Fall wird stattdessen eine leere Zeichenfolge vorangestellt (dertxt=(NR==1?"":txt delim) $0
Teil). - Abschließend
txt
wird die Variable ausgedruckt.