如何用awk保留ps输出表头并将VSZ从KiB转换为MB格式?
解决方法
你可以用下面的awk命令实现需求,完美匹配你的示例场景:
ps -o pid,command,vsz | awk 'NR==1 {print; next} {printf "%6s %-16s %dMB\n", $1, $2, $3/1024}'
命令解释
NR==1 {print; next}:第一行(表头)直接原样输出,next跳过后续逻辑,保证表头不被修改。- 从第二行开始用
printf格式化输出:%6s:让PID列保持右对齐,和原ps输出的格式一致;%-16s:COMMAND列左对齐,固定宽度16,维持列的整齐度;%dMB:把VSZ列的KiB值除以1024后取整,再拼接MB单位。
示例验证
输入(ps输出):
PID COMMAND VSZ 9 bash 6304 537 ps 7476
执行命令后输出:
PID COMMAND VSZ 9 bash 6MB 537 ps 7MB
内容的提问来源于stack exchange,提问作者user15333414
相关产品推荐
相关产品推荐

