2017-03-15 4 views
0

Ich muss verfügbar und frei Swap und versuchen, grep zu verwenden.grep Nummer nach passendem Wort in bash

Befehl free -m druckt sie als:

   total  used  free  shared buff/cache available 
Mem:   1823   147  1372   8   302  1485 
Swap:   511   0   511 

weiß ich, wie total Swap zu erhalten:

free -m | grep Swap | grep -oP "Swap:\s+\K\w+" 

Aber verwalten kann nicht verwendet und frei zu bekommen. Könnte jemand bitte helfen?

+0

'free -m | awk 'NR == 3 {print $ 2}' 'wird den gesamten Swap ausgeben –

+1

Erhalte ihn stattdessen von'/proc/meminfo'. Es ist weniger wahrscheinlich, dass sich das in Zukunft ändert. –

+0

Mit Ideen von diesem anderen Typen und Socowi: '[[$ ( Cyrus

Antwort

2

Mit awk. Wenn Zeile beginnt (^) mit String Swap: Druck vierte Spalte:

free -m | awk '/^Swap:/ {print $4}' 

Ausgang:

 
511 
1

In grep können Sie Swap:\s+\w+\s+\K\w+ für die zweite und Swap:\s+\w+\s+\w+\s+\K\w+ für die dritte Zahl verwenden. Aber es gibt eine noch bessere (pure bash) Lösung:

[[ "$(free -m)" =~ Swap:' '*([0-9]+)' '*([0-9]+)' '*([0-9]+) ]] 
total="${BASH_REMATCH[1]}" 
used="${BASH_REMATCH[2]}" 
free="${BASH_REMATCH[3]}"