Anda juga dapat melakukannya menggunakan awk
, paste
, dan bc
. Saya menemukan pendekatan ini lebih mudah diingat, sintaks dari awk
selalu meminta saya untuk mencari tahu untuk mengonfirmasi.
CATATAN: Pendekatan ini memiliki keuntungan karena dapat bersaing dengan beberapa baris keluaran, mengurangkan angka ke-2, ke-3, ke-4, dst. dari angka ke-1.
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}' | paste -sd- - | bc
7513404
Detail
Di atas menggunakan awk
untuk memilih kolom yang berisi angka yang ingin kita kurangi.
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}'
7969084
408432
Kami kemudian menggunakan paste
untuk menggabungkan 2 nilai nilai ini dan menambahkan tanda minus di antaranya.
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}'| paste -sd- -
7969084-346660
Saat kami meneruskan ini ke bc
itu melakukan perhitungan.
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}'| paste -sd- - | bc
7513404
Solusi murni awk, tidak ada perintah cat atau grep yang berlebihan:
awk '/MemTotal/ {TOT=$2} /MemFree/ {FREE=$2} END {printf("%d kB Used\n", TOT-FREE)}' /proc/meminfo
Saya melihat awk_FTW mengalahkan saya untuk itu tetapi saya pikir memformat hasilnya bisa bagus.
Coba ini:
grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk 'NR==1{s=$2;next}{s-=$2}END{print s}'