2012-04-24 102 views
1

我想通過使用Expect腳本來獲取主機的總內存。感謝我在Get Total Memory of a host with LINUX/EXPECT收到的答案,我現在更接近最終解決方案。 (感謝glenn jackmanSorpigal)。如何從Expect緩衝區字符串中提取某個數字?

連接到主機後,我執行了以下行:

send "cat /proc/meminfo | grep MemTotal | awk '{print \$2}'\r" 

它返回我想要的價值,但是當我包含在$expect_out(buffer)價值,它包含更多的信息比我更需要,包括髮送語句和前後命令提示符標誌。我究竟得到了下面,使用exp_internal 1

expect: set expect_out(buffer) "17# cat /proc/meminfo | grep MemTotal | awk '{print $2}'\r\n34150400\r\nCBA" 

我想提取剛剛接近尾聲34150400數量。任何暗示或想法?

回答

2
regexp "\n(\[0-9]+)" $expect_out(buffer) - num 
puts $num ;# => 34150400 

順便說一句,你可以做到這一點,不發送shell命令:

set fid [open /proc/meminfo] 
while {[gets $fid line] != -1} { 
    if {[regexp {^MemTotal: *(\d+)} $line - memtotal]} { 
     break 
    } 
} 
close $fid 
puts $memtotal