Formatear exportación usando grep y awk

Formatear exportación usando grep y awk

Me gustaría exportar datos desde el servidor Zimbra, pero se exportan datos en cada línea nueva, mi comando:
zmprov -l gaa -v domain.com | grep -e "zimbraForeignPrincipal: " -e "zimbraTwoFactorAuthEnabled: " -e "^mail: "

pero el resultado se ve así:
correo electrónico:
zimbraForeignPrincipal:
zimbraTwoFactorAuthEnabled
¿Hay alguna forma de tener un correo electrónico con atributos relacionados en una línea?

Respuesta1

Utilice 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}'

Hace lo siguiente:

  1. Establece el delimitador según el número de línea actual: si es impar, entonces el delimitador es una nueva línea, si es par, el delimitador es un espacio (esta es la delim=(NR%2?"\n":" ")parte).
  2. Recoge todas las líneas en una variable denominada txt. Cada línea se antepone con la variable en sí (es decir, las líneas recopiladas hasta el momento) y el delimitador del punto anterior, a menos que esta sea la primera línea, en cuyo caso, se antepone una cadena vacía (la txt=(NR==1?"":txt delim) $0parte).
  3. Finalmente, txtse imprime la variable.

información relacionada