Parsing 使用AWK如何计算匹配的总行数? *** iostat -m <-- in megabytes iostat -m | awk '{if($1 ~ /nvme*/ ) print $2, $3, $4}' ------------------ 9.38, 0.20, 0.57 13.67, 0.01, 1.60 ------------------- 23.05, 0.21, 2.17 <<-- The total

Parsing 使用AWK如何计算匹配的总行数? *** iostat -m <-- in megabytes iostat -m | awk '{if($1 ~ /nvme*/ ) print $2, $3, $4}' ------------------ 9.38, 0.20, 0.57 13.67, 0.01, 1.60 ------------------- 23.05, 0.21, 2.17 <<-- The total,parsing,awk,totals,iostat,Parsing,Awk,Totals,Iostat,我如何才能做到这一点?试试: iostat -m | awk '$1 ~ /nvme*/{a+=$2;b+=$3;c+=$4;print $2, $3, $4} END{print"--------------";print a,b,c}' 工作原理 $1~/nvme*/ 这将选择第一个字段与regex nvme*匹配的行。我的iostat不生成包含nvme的行。因此,这取决于您确定这是否真的是适合您的情况的正则表达式 a+=2美元;b+=3美元;c+=4美元 这将在变量a、b和c中保持三列

我如何才能做到这一点?

试试:

iostat -m |  awk '$1 ~ /nvme*/{a+=$2;b+=$3;c+=$4;print $2, $3, $4} END{print"--------------";print a,b,c}'
工作原理 $1~/nvme*/

这将选择第一个字段与regex nvme*匹配的行。我的iostat不生成包含nvme的行。因此,这取决于您确定这是否真的是适合您的情况的正则表达式

a+=2美元;b+=3美元;c+=4美元

这将在变量a、b和c中保持三列感兴趣的运行总和

打印$2、$3、$4

这将打印感兴趣的三列

结束{打印------;打印a、b、c}

所有行读入后,将打印出总数。打印------在我的系统上生成了一个好看的表。如果iostat以不同的格式生成输出,则可能需要进行相应的调整

尝试:

工作原理 $1~/nvme*/

这将选择第一个字段与regex nvme*匹配的行。我的iostat不生成包含nvme的行。因此,这取决于您确定这是否真的是适合您的情况的正则表达式

a+=2美元;b+=3美元;c+=4美元

这将在变量a、b和c中保持三列感兴趣的运行总和

打印$2、$3、$4

这将打印感兴趣的三列

结束{打印------;打印a、b、c}

所有行读入后,将打印出总数。打印------在我的系统上生成了一个好看的表。如果iostat以不同的格式生成输出,则可能需要进行相应的调整


只需将看到的数字添加到变量中,保留总数,并将其打印在一个结束块中。您能否清楚地发布您的源数据,以及您试图实现的输出示例?我的系统上的iostat命令不会生成包含nvme.Etan的输出,这就是问题:如何使用变量完成它?每行的值不同,因此如何将这两行相加为一个变量。我试过几种方法,但没有计算。戈蒂,这就是来源。不确定你所说的“不产生产出”是什么意思。它从iostat正确地报告了接口,这不是问题所在,我正在尝试获取总数。换句话说,这个命令工作得很好。@Queasy,在我的系统上,iostat命令没有-m选项。如果你发布了一个取决于具体输入的问题,如果你真的提供了你试图处理的测试输入,你会得到更好的答案。只需将你看到的数字添加到变量中,保持总数,并在末尾块中打印出来。你能清楚地发布你的源数据吗,还有一个你想要实现的输出的例子?我的系统上的iostat命令不会生成包含nvme.Etan的输出,这就是问题:如何使用变量完成它?每行的值不同,因此如何将这两行相加为一个变量。我试过几种方法,但没有计算。戈蒂,这就是来源。不确定你所说的“不产生产出”是什么意思。它从iostat正确地报告了接口,这不是问题所在,我正在尝试获取总数。换句话说,这个命令工作得很好。@Queasy,在我的系统上,iostat命令没有-m选项。如果你发布了一个取决于具体输入的问题,如果你真的提供了你试图处理的测试输入,你会得到更好的答案。谢谢John!我现在也更明白了:-。稍微改变一下,但效果很好。iostat-m|awk'$1~/nvme*/{a+=$2;b+=$3;c+=$4}结束{打印a,b,c}谢谢约翰!我现在也更明白了:-。稍微改变一下,但效果很好。iostat-m | awk'$1~/nvme*/{a+=$2;b+=$3;c+=$4}结束{print a,b,c}'