Печатать только первые три числа из строки - PullRequest
0 голосов
/ 01 июля 2018

Я пытаюсь распечатать общий объем памяти в ГБ, но вывести только первые три цифры. Я попытался использовать Cut and Sed без удачи.

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

Урожайность:

MemoryTotal 257669GB

Но я бы хотел, чтобы это распечатали:

MemoryTotal 257 ГБ

Ответы [ 3 ]

0 голосов
/ 01 июля 2018

Поскольку /proc/meminfo выводит объем памяти в КБ, а вы хотите вывод в ГБ, вместо этого вам нужно разделить число в КБ на 1024 * 1024.

echo MemoryTotal $(( $(grep MemTotal /proc/meminfo | awk '{ print $2 }') / 1024 / 1024))GB
0 голосов
/ 01 июля 2018

С sed + numfmt инструментами:

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

Пример вывода (из моей текущей ОС):

MemTotal:            2.2G
0 голосов
/ 01 июля 2018

Использование free -g:

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