【问题标题】:how to awk the command IOSTAT -DlR 1 2如何 awk 命令 IOSTAT -DlR 1 2
【发布时间】:2017-11-30 20:05:46
【问题描述】:

输入:

#iostat -DlR 1 2

输出:

root@myserver #iostat -DlR 1 2

System configuration: lcpu=20 drives=2 paths=16 vdisks=0

Disks:                      xfers                                read                                write                                  queue                  
--------------- -------------------------------- ------------------------------------ ------------------------------------ -------------------------------------- 
                  %tm    bps   tps  bread  bwrtn   rps    avg    min    max time fail   wps    avg    min    max time fail    avg    min    max   avg   avg  serv
                  act                                    serv   serv   serv outs              serv   serv   serv outs        time   time   time  wqsz  sqsz qfull
hdisk1            0.0   0.0    0.0   0.0    0.0    0.0   0.0    0.0    0.0     0    0   0.0   0.0    0.0    0.0     0    0   0.0    0.0    0.0    0.0   0.0   0.0
hdisk0            0.0   0.0    0.0   0.0    0.0    0.0   0.0    0.0    0.0     0    0   0.0   0.0    0.0    0.0     0    0   0.0    0.0    0.0    0.0   0.0   0.0

Disks:                      xfers                                read                                write                                  queue                  
--------------- -------------------------------- ------------------------------------ ------------------------------------ -------------------------------------- 
                  %tm    bps   tps  bread  bwrtn   rps    avg    min    max time fail   wps    avg    min    max time fail    avg    min    max   avg   avg  serv
                  act                                    serv   serv   serv outs              serv   serv   serv outs        time   time   time  wqsz  sqsz qfull
hdisk1            0.0   0.0    0.0   0.0    0.0    0.0   0.0    0.0    0.0     0    0   0.0   0.0    0.0    0.0     0    0   0.0    0.0    0.0    0.0   0.0   0.0
hdisk0            0.0  77.8K  19.0   0.0   77.8K   0.0   0.0    0.0    0.0     0    0  19.0   0.3    0.2    0.5     0    0   0.0    0.0    0.0    0.0   0.0   0.0

期望的输出:

Device     bps     tps     bread     bwrtn
hdisk1     0.0     0.0      0.0       0.0         
hdisk0     0.0     0.0      0.0       0.0
hdisk1     0.0     0.0      0.0       0.0         
hdisk0    77.8k   19.0      0.0      77.8K

我想要想要的输出。

HEADER='Device      bps     tps     bread     bwrtn'
HEADERIZE="BEGIN {print \"$HEADER\"}"
PRINTF='{printf "%s  %s  %s  %s  %s  %s  %s  %s\n", device, bps, tps, bread, bwrtn}'
CMD='iostat -DlR 1 2'
FILTER='/^cd/ {next} /^Disks:/ {reportOrd++; next} (reportOrd<2) {next}'
FORMAT='{device=$1; bps="2"; tps="3"; bread=$4; bwrtn=$5}'

$CMD | tee $TEE_DEST | awk "$HEADERIZE $FILTER $FORMAT $PRINTF"  header="$HEADER"

当我运行上述命令时,我得到的输出是这个(这不是我想要的输出:

root@myserver #$CMD | tee $TEE_DEST | awk "$HEADERIZE $FILTER $FORMAT $PRINTF"  header="$HEADER"
Device      bps     tps     bread     bwrtn
---------------            2            3  ------------------------------------  --------------------------------------
%tm                   2            3        bread        bwrtn
act                   2            3         serv         outs
hdisk1                2            3          0.0          0.0
hdisk0                2            3          0.0          0.0

【问题讨论】:

  • 我刚刚为上下文添加了 hdisk2 和 3...hdisk 的数量在我的 LPAR 上有所不同......

标签: awk iostat


【解决方案1】:
$ awk '
    !NF { f=0 }
    $1=="%tm" { if (!cnt++) print "Device", $2, $3, $4, $5; f=1 }
    f && /^[^[:space:]]/ { print $1, $3, $4, $5, $6 }
' file | column -t
Device  bps    tps   bread  bwrtn
hdisk1  0.0    0.0   0.0    0.0
hdisk0  0.0    0.0   0.0    0.0
hdisk1  0.0    0.0   0.0    0.0
hdisk0  77.8K  19.0  0.0    77.8K

【讨论】:

    猜你喜欢
    • 2021-03-01
    • 2020-03-15
    • 1970-01-01
    • 2016-08-27
    • 2022-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    相关资源
    最近更新 更多