仅显示字符串中的前三个数字

时间:2018-07-01 16:52:58

标签: bash sed cut substr

我正在尝试打印以GB为单位的内存总量,但仅打印前三位数。我尝试过割伤和镇静,没有运气。

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

收益:

  

内存总计257669GB

但是我想打印出来:

  

内存总计257GB

3 个答案:

答案 0 :(得分:4)

使用free -g

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

使用sed + numfmt工具:

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

示例输出(来自当前操作系统)

MemTotal:            2.2G