AWK odejmowanie zmiennych od siebie

Potrzebujesz pomocy z C, C++, perl, python, itp.
R_Przemek
Posty: 54
Rejestracja: 12 lipca 2008, 16:02

AWK odejmowanie zmiennych od siebie

Post autor: R_Przemek »

Witam

mam taki kod:

Kod: Zaznacz cały

awk '$1=/MemTotal:/ {print $2}' /proc/meminfo
awk '$1=/MemFree:/ {print $2}' /proc/meminfo
efektem są dwie wartości "MemTotal" (watrość większa) i "MemFree" (wartość mniejsza)
Teraz chciał bym zamiast tych dwóch wartości wyświetlić różnicę MemTotal i MemFree.
Awatar użytkownika
markossx
Beginner
Posty: 489
Rejestracja: 26 maja 2007, 16:01
Lokalizacja: Polska

Post autor: markossx »

Zrób to bash:
zapisz wyniki do zmiennych A i B i następnie oblicz różnice:

Kod: Zaznacz cały

#!/bin/bash
  A=`cat /proc/meminfo | grep MemTotal | awk '{ print $2 }'`
  B=`cat /proc/meminfo | grep MemFree | awk '{ print $2 }'`
  echo $A
  echo $B
Poszukaj jak się oblicza podstawowe działania arytmetyczne w bash i jesteś w domu ;-)
yakow
Posty: 52
Rejestracja: 13 czerwca 2008, 09:30

Post autor: yakow »

A musi być konieczne za pomocą cat /proc/meminfo i odejmowania? Bo jak nie to może łatwiej użyć sobie komendy:

Kod: Zaznacz cały

free | grep Mem | awk '{print $3}'
Wyświetli Ci zajętą pamięć czyly to co uzyskujesz przez odjęcie wolnej od całkowitej. A jak do free dodasz some "-m" to od razu będziesz miał w megabajtach.
Awatar użytkownika
markossx
Beginner
Posty: 489
Rejestracja: 26 maja 2007, 16:01
Lokalizacja: Polska

Post autor: markossx »

Każdy sposób jest dobry jak prowadzi do rozwiązania moim zdaniem...
Pewnie i można samym awk ale nie sprawdzałem jak.
snah
Beginner
Posty: 103
Rejestracja: 19 lutego 2008, 09:09

Post autor: snah »

W awk może być np. tak:

Kod: Zaznacz cały

awk -v tmp= '/MemTotal:/ {tmp=$2};/MemFree:/ {print tmp-$2}' /proc/meminfo
albo:

Kod: Zaznacz cały

awk 'begin {tmp};/MemTotal:/ {tmp=$2};/MemFree:/ {print tmp-$2}' /proc/meminfo
Użycie free zaproponowane przez yakow wydaje mi się najlepszym wyjściem.
Awatar użytkownika
markossx
Beginner
Posty: 489
Rejestracja: 26 maja 2007, 16:01
Lokalizacja: Polska

Post autor: markossx »

Użycie free zaproponowane przez yakow wydaje mi się najlepszym wyjściem.
Zgadzam się bo jest dedykowane narzędzie użyte, ale jak się nie zna danego narzędzia trzeba sobie radzić inaczej. :-D
ODPOWIEDZ