我运行以下代码
iostat -x 1 2 | sed 's/,/./g' | awk '/^avg-cpu/ {c++; a=2}
c==2 && a && !--a {printf ("%s,%s,%s,", $1, $3, $4)}
c==2 && /^sda/ {printf ("%s,", $14)}
c==2 && /^sdb/ {printf ("%s,", $14)}
c==2 && /^nvme0n1/ {printf ("%s,",$14)}'
以获取cpu和disk i / o的值。我现在要做的是检查是否有nvm磁盘。如果有打印,则其实用程序打印-1.00。
我试过
if [ c==2 && /^nvme0n1/ ] then {printf ("%s,",$14)}; else {printf -1.00}'
我正在
awk: cmd. line:5: if [ c==2 && /^nvme0n1/ ] then {printf ("%s,",$14)}; else {printf -1}
awk: cmd. line:5: ^ syntax error
awk: cmd. line:5: if [ c==2 && /^nvme0n1/ ] then {printf ("%s,",$14)}; else {printf -1}
awk: cmd. line:5: ^ syntax error
awk: cmd. line:5: if [ c==2 && /^nvme0n1/ ] then {printf ("%s,",$14)}; else {printf -1}
awk: cmd. line:5: ^ syntax error
和
c==2 && !/^nvme0n1/ {printf ("%s,",1.00)}'
这给了我不止一个1.00,我猜每次1.00都找不到它。
答案 0 :(得分:1)
听起来您正试图获得磁盘吞吐量利用率,)}
无法使用-1
。
awk
是它自己独立的脚本语言,您不能在其中使用任何awk
语法。
但主要问题是,在您阅读完所有行之前,无法确定您是否找到了自己的号码。处理完所有行后,您可以确定是打印数字还是bash
。您可以使用awk的特殊-1
块。此代码还使用特殊END
块来设置默认值:
BEGIN