Bash - 分割字段不同间距的分隔符
Bash - delimeter to cut field differing spacing
我正在 bash 文件中切割 CPU 使用情况统计信息并以格式化的方式呈现,iostat 中有多个字段,但只有用户、系统和闲置相关
如下图:
echo "" `iostat -c | awk 'NR==3' | cut -d '%' -f 1,2,4,7`
echo "" `iostat -c | awk 'NR==4' | cut -d ' ' -f 1,2,4,7`
当前输出如下:
avg-cpu: %user %system %idle
cut: the delimiter must be a single character
Try 'cut --help' for more information.
当我使用它来剪切字段时,它不适用于下一行,因为字段中的间距不同,你如何解释这一点,因为它在剪切分隔符时只允许单个字符?
这是在不格式化的情况下定期执行的命令:
avg-cpu: %user %nice %system %iowait %steal %idle
0.07 0.01 0.14 0.04 0.00 99.74
不需要写两遍,只需要一个awk:
iostat -c | awk 'NR==3{print ,,,};NR==4{print ,,}'
您可以在 awk 中使用 printf 格式化输出并打印感兴趣的字段:
iostat -c | awk '/avg-cpu/{printf "%8s %8s %8s %8s\n", , , , ; getline; printf " %8s %8s %8s\n", , , }'
cut
命令的 -d
参数接受 ' '
作为一个或多个空格的分隔符。
您可以删除前导空格,例如,使用 this。以下命令为您提供 0.07 0.14 99.74
作为输出:
echo "" `iostat -c | awk 'NR==4' | awk '{=};1' | cut -d' ' -f1,3,6`
我正在 bash 文件中切割 CPU 使用情况统计信息并以格式化的方式呈现,iostat 中有多个字段,但只有用户、系统和闲置相关
如下图:
echo "" `iostat -c | awk 'NR==3' | cut -d '%' -f 1,2,4,7`
echo "" `iostat -c | awk 'NR==4' | cut -d ' ' -f 1,2,4,7`
当前输出如下:
avg-cpu: %user %system %idle
cut: the delimiter must be a single character
Try 'cut --help' for more information.
当我使用它来剪切字段时,它不适用于下一行,因为字段中的间距不同,你如何解释这一点,因为它在剪切分隔符时只允许单个字符?
这是在不格式化的情况下定期执行的命令:
avg-cpu: %user %nice %system %iowait %steal %idle
0.07 0.01 0.14 0.04 0.00 99.74
不需要写两遍,只需要一个awk:
iostat -c | awk 'NR==3{print ,,,};NR==4{print ,,}'
您可以在 awk 中使用 printf 格式化输出并打印感兴趣的字段:
iostat -c | awk '/avg-cpu/{printf "%8s %8s %8s %8s\n", , , , ; getline; printf " %8s %8s %8s\n", , , }'
cut
命令的 -d
参数接受 ' '
作为一个或多个空格的分隔符。
您可以删除前导空格,例如,使用 this。以下命令为您提供 0.07 0.14 99.74
作为输出:
echo "" `iostat -c | awk 'NR==4' | awk '{=};1' | cut -d' ' -f1,3,6`