시간이 장치 열 옆에 있도록 iostat 출력을 다시 정렬합니다.

시간이 장치 열 옆에 있도록 iostat 출력을 다시 정렬합니다.

iostat 데이터를 다시 포맷하려고 합니다.

현재 출력:

TimeA

Column1 Column2 Column3
disk1    10GB     small
disk2    20GB     medium
disk3    30GB     large

TimeB

Column1 Column2 Column3
disk1    10GB     small
disk2    20GB     medium
disk3    30GB     large

나는 다음을 원합니다 :

TimeA  Column1 Column2 Column3
       disk1    10GB     small
       disk2    20GB     medium
       disk3    30GB     large

TimeB  Column1 Column2 Column3
       disk1    10GB     small
       disk2    20GB     medium
       disk3    30GB     large

답변1

awk '
     NF == 1    { time_value = $1 }
     NF == 0    { if (time_value == "") print }
     NF == 3    { printf("%-7s", time_value); time_value = ""; print }
    '
  • 행에 값이 하나만 있으면 시간 값입니다. 구하다.
  • 타임라인과 데이터 라인 사이에 나타나는 빈 라인을 인쇄합니다. 데이터 줄 뒤에 빈 줄을 인쇄하지 마십시오.
  • 세 개의 값이 있는 행을 처음 볼 때 처음 부분에 저장된 시간 값을 인쇄합니다. 그런 다음 저장된 시간 값을 삭제합니다. 후속 데이터 라인(다음 타임 라인까지)은 처음에 공백과 함께 인쇄됩니다.

관련 정보