2017-05-22 44 views
0

需要從UNIX系統從PROC MEM信息的總內存信息: 現在這個命令得到正確的線對我來說: cat /proc/meminfo | grep "MemTotal" 但這返回整個行:正則表達式從行修剪,得到行數

MemTotal:  1024984 kB 

我需要進一步修整該行進入:

1024984 kB

到目前爲止,這是完整的comman d我使用的,但第二部分似乎不工作:

cat /proc/meminfo | grep "MemTotal" | grep -E -o "([0-9])"

我認爲第二個grep的將至少返回的數字部分,但其並不返回任何東西。

任何人都可以幫我解決這個問題嗎? 謝謝。

+0

'(\ d +)+。*'你可以試試這個,但這裏也是有用的工具來測試你的正則表達式[鏈接]( https://regex101.com/) –

+0

'grep -Eo'[0-9] +''獲取數字部分 –

回答

4

awk是這裏更適合,用於匹配MemTotal所有行,打印第二和第三列

$ grep 'MemTotal' /proc/meminfo 
MemTotal:  1024984 kB 
$ awk '/MemTotal/{print $2,$3}' /proc/meminfo 
1024984 kB 


隨着grep,如果PCRE可使用可變長度的回顧後:

$ grep -oP 'MemTotal:\h+\K.*' /proc/meminfo 
1024984 kB 
0

奇怪的,對我來說,它返回

8 
0 
8 
4 
9 
0 
4 

這是因爲[0-9]只匹配一個數字。您需要一個+匹配至少一個。你也可以刪除括號,他們在這裏沒有任何用處。

grep MemTotal /proc/meminfo | grep -E -o '[0-9]+'