仅打印字符串中的前三个数字
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
我正在尝试打印出以 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