Gostaria de exportar dados do servidor zimbra, mas ele exporta dados a cada nova linha, meu comando:
zmprov -l gaa -v domain.com | grep -e "zimbraForeignPrincipal: " -e "zimbraTwoFactorAuthEnabled: " -e "^mail: "
mas o resultado é semelhante a:
email:
zimbraForeignPrincipal:
zimbraTwoFactorAuthEnabled
Existe alguma maneira de ter email com atributos relacionados em uma linha?
Responder1
Use 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}'
Ele faz o seguinte:
- Define o delimitador com base no número da linha atual: se for ímpar, então o delimitador é uma nova linha, se for par, o delimitador é um espaço (esta é a
delim=(NR%2?"\n":" ")
parte). - Coleta todas as linhas em uma variável chamada
txt
. Cada linha é anexada com a própria variável (ou seja, as linhas coletadas até agora) e o delimitador do ponto anterior, a menos que esta seja a primeira linha, caso em que uma string vazia é anexada (atxt=(NR==1?"":txt delim) $0
parte) - Finalmente, a variável
txt
é impressa.