時間がデバイス列の横になるように 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 }
    '
  • 行に値が 1 つしかない場合は時間値です。救う。
  • タイムラインとデータラインの間に表示される空白行を印刷します。データ行の後に空白行を印刷しないでください。
  • 3つの値を持つ行を最初に表示したときに、最初の部分に保存された時間値を印刷します。その後、保存された時間値を削除します。後続のデータライン(次のタイムラインまで)は最初にスペースで印刷されます。

関連情報