iostat可以显示永久设备名称(带有-j id),而不是内核设备名称(例如sda),但这也意味着选项-h用于“人类可读”输出。
这将导致这样的输出(一行包含永久磁盘名称,例如HOMES或DATADISK,下一行包含该磁盘的值)。
(在我的示例中,我将iostat的输出通过管道传递到awk'// {print strftime(“%Y-%m-%d%H:%M:%S”),$ 0}',以在每行):
2018-06-13 11:57:03 HOMES
2018-06-13 11:57:03 0.00 0.00 0.00 0.50 0.00 2.00 8.00 0.00 1.00 0.00 1.00 1.00 0.05
2018-06-13 11:57:03 ARCHIVEDISK
2018-06-13 11:57:03 0.00 0.00 0.00 0.50 0.00 2.00 8.00 0.00 0.00 0.00 0.00 0.00 0.00
2018-06-13 11:57:03 DATADISK
2018-06-13 11:57:03 0.00 0.00 86.00 0.50 680.00 2.00 15.77 0.12 1.40 1.41 1.00 1.26 10.90
2018-06-13 11:57:05 HOMES
2018-06-13 11:57:05 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2018-06-13 11:57:05 ARCHIVEDISK
2018-06-13 11:57:05 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2018-06-13 11:57:05 DATADISK
2018-06-13 11:57:05 0.00 0.00 122.00 116.00 976.00 1164.00 17.98 0.56 2.33 3.36 1.26 1.47 34.90
如何合并行,以便得到此信息:
2018-06-13 11:57:03 HOMES 0.00 0.00 0.00 0.50 0.00 2.00 8.00 0.00 1.00 0.00 1.00 1.00 0.05
2018-06-13 11:57:03 ARCHIVEDISK 0.00 0.00 0.00 0.50 0.00 2.00 8.00 0.00 0.00 0.00 0.00 0.00 0.00
2018-06-13 11:57:03 DATADISK 0.00 0.00 86.00 0.50 680.00 2.00 15.77 0.12 1.40 1.41 1.00 1.26 10.90
2018-06-13 11:57:05 HOMES 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2018-06-13 11:57:05 ARCHIVEDISK 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
2018-06-13 11:57:05 DATADISK 0.00 0.00 122.00 116.00 976.00 1164.00 17.98 0.56 2.33 3.36 1.26 1.47 34.90
最佳答案
使用awk:
awk 'NF==3{n=$3;next}{for(i=NF;i>2;i--) $(i+1)=$i;$3=n}1' file | column -t
如果该行包含3个元素,则
awk
脚本将获取名称。对于所有其他行,它会将所有元素移动一个位置,但前两个除外。
最后一行被打印出来。
命令
column
正在重新格式化以按列显示。关于linux - 将第n + 1行的列合并到第n行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50835766/