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つの値を持つ行を最初に表示したときに、最初の部分に保存された時間値を印刷します。その後、保存された時間値を削除します。後続のデータライン(次のタイムラインまで)は最初にスペースで印刷されます。