2017-03-15 7 views
0

grepを利用しようとすると、フリースワップを取得する必要があります。bashで単語をマッチングした後のgrep番号

コマンドとしてfree -m版画それを:

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

私は、合計スワップを取得する方法を知っている:

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

をしかし使用し、無料で入手するために管理することはできません。誰かが助けてくれますか?

+0

'free -m | awk 'NR == 3 {print $ 2}' 'は総スワップを表示します –

+1

代わりに'/proc/meminfo'から取得します。将来的には変化する可能性は低いです。 –

+0

他の人とソコウイからのアイデア: '[$( Cyrus

答えて

2

awk。もしストリングSwap:プリント4列と行の開始(^):

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

は出力:のgrepで

 
511 
1

あなたは第3の数のための第二のためSwap:\s+\w+\s+\K\w+Swap:\s+\w+\s+\w+\s+\K\w+を使用することができます。しかし、さらに良い(純粋なbash)ソリューションがあります:

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