linux - awk + 无法从 iostat 剪切字段
问题描述
当我执行以下操作时,我们会得到输出
iostat -x 1|grep sdb
sdb 0.00 13.65 4.17 11.65 113.72 991.55 139.74 0.24 15.39 3.27 19.73 0.46 0.72
sdb 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
现在我想剪切第二个字段,但现在我们没有得到输出
[root@linux1 ~]# iostat -x 1|grep sdb | awk '{print $2}'
还有,管道没有输出,
iostat -x 1|grep sdb | more
为什么?
解决方案
请您尝试以下操作。
iostat -x 1 | grep --line-buffered "sdb" | awk '{print $2}'
或者只有awk
:
iostat -x 1 | awk '/sdb/{print $2;fflush();}'
或者
iostat -x 1 | awk '$1=="sdb"{print $2;fflush();}'
从man awk
页面:
fflush([file]) 刷新与打开的输出文件或管道文件关联的所有缓冲区。如果文件丢失或者它是空字符串,则刷新所有打开的输出文件和管道。
推荐阅读
- java - 在 Java 赋值中使用数组和 for 循环时遇到问题
- command - Visual Studio 命令提示符无法正常工作
- c# - 在整个系统中递归查找文件,返回第一个文件夹
- regex - 带有正则表达式的wpf Richtextbox选择
- javascript - Jquery/Javascript:倒数计时器动作不规律
- laravel - 部署后服务器上的 Laravel 本地路由
- typescript - 检测到函数返回“void”(而不是“undefined”)
- javascript - 什么会使 google maps api 集群无法正常工作?
- python - Django Rest Framework 无法解析多部分/表单数据
- android - onSaveInstanceState 之后的 Androidx Navigation IllegalStateException