我有这个脚本:
var=$(cat /proc/meminfo | grep MemFree | sed 's/[^0-9]//g')
echo "$(($var / 1024)) MB / 12.288 MB Memory free\n"
输出如下内容:
10887 MB / 12.288 MB Memory free
但为了更好的可读性,我希望第一个数字与此10.887
一样,我尝试了numfmt
,但出于某些原因,它不包含在我的destro或coreutils中。
答案 0 :(得分:1)
您可以使用awk
替换代码:
awk '/MemTotal/{m=$2/(1024*1024)}
/MemFree/{printf "%.3f GB / %.3f GB Memory free\n", $2/(1024*1024), m}' /proc/meminfo
1.721 GB / 3.675 GB Memory free
答案 1 :(得分:0)
printf
(以及朋友)可以使用(根据手册页)SUSv2
格式标记'
来执行此操作。
因此,如果您的语言环境设置正确,这应该可以达到您想要的效果。
memfree=$(sed -ne '/MemFree/{s/[^0-9]//g;p}' /proc/meminfo)
printf "%'d MB / 12.288 MB Memory free\n" "$((memfree / 1024))"