zimbra 서버에서 데이터를 내보내고 싶지만 모든 새 줄에 데이터를 내보냅니다. 내 명령은 다음과 같습니다.
zmprov -l gaa -v domain.com | grep -e "zimbraForeignPrincipal: " -e "zimbraTwoFactorAuthEnabled: " -e "^mail: "
하지만 결과는 다음과 같습니다.
email:
zimbraForeignPrincipal:
zimbraTwoFactorAuthEnabled
관련 속성이 포함된 이메일을 한 줄에 포함할 수 있는 방법이 있습니까?
답변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
인쇄됩니다.