Můžete to provést také pomocí awk
, paste
a bc
. Tento přístup se mi snadněji pamatuje, syntaxe awk
vždy vyžaduje, abych si věci vyhledal a potvrdil.
POZNÁMKA: Tento přístup má tu výhodu, že je možné se potýkat s více řádky výstupu, odečítáním 2., 3., 4. atd. čísla od 1.
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}' | paste -sd- - | bc
7513404
Podrobnosti
Výše uvedené používá awk
vyberte sloupec obsahující čísla, která chceme odečíst.
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}'
7969084
408432
Potom použijeme paste
zkombinovat tyto 2 hodnoty hodnot a přidat mezi ně znaménko mínus.
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}'| paste -sd- -
7969084-346660
Když to předáme bc
provede výpočet.
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}'| paste -sd- - | bc
7513404
Čistě awk řešení, žádné nadbytečné příkazy cat nebo grep:
awk '/MemTotal/ {TOT=$2} /MemFree/ {FREE=$2} END {printf("%d kB Used\n", TOT-FREE)}' /proc/meminfo
Vidím, že awk_FTW mě porazil, ale myslím, že formátování výstupu by mohlo být hezké.
Zkuste toto:
grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk 'NR==1{s=$2;next}{s-=$2}END{print s}'