Я хотел бы экспортировать данные с сервера 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}'
Он делает следующее:
- Устанавливает разделитель на основе текущего номера строки: если он нечетный, то разделителем является новая строка, если четный, то разделителем является пробел (это часть
delim=(NR%2?"\n":" ")
). - Собирает все строки в переменную с именем
txt
. Каждая строка начинается с самой переменной (т. е. собранных строк на данный момент) и разделителя из предыдущей точки, если только это не первая строка, в этом случае вместо нее начинается пустая строка (частьtxt=(NR==1?"":txt delim) $0
) - Наконец, переменная
txt
выводится на печать.