Экспорт формата с использованием grep и awk

Экспорт формата с использованием grep и awk

Я хотел бы экспортировать данные с сервера Zimbra, но это экспорт данных в каждой новой строке, моя команда:
zmprov -l gaa -v domain.com | grep -e "zimbraForeignPrincipal: " -e "zimbraTwoFactorAuthEnabled: " -e "^mail: "

но результат выглядит так:
email:
zimbraForeignPrincipal:
zimbraTwoFactorAuthEnabled
Есть ли способ разместить email со связанными атрибутами в одной строке?

решение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}'

Он делает следующее:

  1. Устанавливает разделитель на основе текущего номера строки: если он нечетный, то разделителем является новая строка, если четный, то разделителем является пробел (это часть delim=(NR%2?"\n":" ")).
  2. Собирает все строки в переменную с именем txt. Каждая строка начинается с самой переменной (т. е. собранных строк на данный момент) и разделителя из предыдущей точки, если только это не первая строка, в этом случае вместо нее начинается пустая строка (часть txt=(NR==1?"":txt delim) $0)
  3. Наконец, переменная txtвыводится на печать.

Связанный контент