awk
を使用してこれを行うこともできます 、 paste
、および bc
. awk
の構文は、このアプローチを覚えやすいと思います 確認するために、いつも私に物事を調べるように要求します.
注: このアプローチには、1 番目から 2 番目、3 番目、4 番目などの数値を減算して、複数行の出力と競合できるという利点があります。
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}' | paste -sd- - | bc
7513404
詳細h3>
上記は awk
を使用しています 減算する数値を含む列を選択します。
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}'
7969084
408432
次に paste
を使用します これら 2 つの値を結合し、その間にマイナス記号を追加します。
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}'| paste -sd- -
7969084-346660
これを bc
に渡すと 計算を実行します。
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}'| paste -sd- - | bc
7513404
冗長な cat コマンドや grep コマンドを使用しない純粋な awk ソリューション:
awk '/MemTotal/ {TOT=$2} /MemFree/ {FREE=$2} END {printf("%d kB Used\n", TOT-FREE)}' /proc/meminfo
awk_FTW が私を打ち負かしたように見えますが、出力をフォーマットするのは良いことかもしれません.
これを試してください:
grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk 'NR==1{s=$2;next}{s-=$2}END{print s}'