仅打印字符串中的前三个数字

Print only first three numbers from string

我正在尝试打印出以 GB 为单位的内存总量,但只打印出前三位数字。我试过使用 cut 和 sed 没有运气。

#!/bin/bash
echo MemoryTotal $(( $(cat /proc/meminfo | grep MemTotal | awk '{ print  }') / 1024 ))

产量:

MemoryTotal 257669GB

但我想打印出来:

MemoryTotal 257GB

使用free -g:

free -g | awk 'NR==2{print }'

由于 /proc/meminfo 以 KB 为单位输出内存大小,而您希望以 GB 为单位输出,因此您应该做的是将以 KB 为单位的数字除以 1024 * 1024。

echo MemoryTotal $(( $(grep MemTotal /proc/meminfo | awk '{ print  }') / 1024 / 1024))GB

使用 sed + numfmt 工具:

sed '1 s/ \(.\)B$/\U/;q' /proc/meminfo | numfmt --field 2 --from=auto --to=iec

示例输出(来自我当前的 OS):

MemTotal:            2.2G