grep 및 awk를 사용하여 형식 내보내기

grep 및 awk를 사용하여 형식 내보내기

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

다음을 수행합니다.

  1. 현재 줄 번호를 기준으로 구분 기호를 설정합니다. 홀수이면 구분 기호는 줄 바꿈이고, 짝수이면 구분 기호는 공백입니다(이 부분입니다 delim=(NR%2?"\n":" ")).
  2. 모든 행을 이름이 지정된 변수로 수집합니다 txt. 각 줄 앞에는 변수 자체(예: 지금까지 수집된 줄)와 이전 지점의 구분 기호가 추가됩니다. 첫 번째 줄이 아닌 경우에는 빈 문자열(부분 txt=(NR==1?"":txt delim) $0)이 대신 추가됩니다.
  3. 마지막으로 변수가 txt인쇄됩니다.

관련 정보