Я пытаюсь распечатать общий объем памяти в ГБ, но распечатываю только первые три цифры. Я безуспешно пробовал использовать cut и sed.
#!/bin/bash
echo MemoryTotal $(( $(cat /proc/meminfo | grep MemTotal | awk '{ print $2 }') / 1024 ))
Урожайность:
MemoryTotal 257669GB
Но я бы хотел это распечатать:
MemoryTotal 257GB





Используйте free -g:
free -g | awk 'NR==2{print $2}'
Поскольку /proc/meminfo выводит размер памяти в КБ, а вы хотите вывод в ГБ, вместо этого вам следует разделить число в КБ на 1024 * 1024.
echo MemoryTotal $(( $(grep MemTotal /proc/meminfo | awk '{ print $2 }') / 1024 / 1024))GB
С инструментами sed + numfmt:
sed '1 s/ \(.\)B$/\U\1/;q' /proc/meminfo | numfmt --field 2 --from=auto --to=iec
Пример вывода (из моей текущей ОС):
MemTotal: 2.2G
это работает, спасибо! Я отмечу это как решенное, как только это позволит мне. Люблю простые решения!