2015-05-01 140 views
0

我一直試圖解析多行字符串並從中提取一個子字符串。我從ruby文件運行「ifconfig」命令並​​嘗試查找第一個網絡接口名稱。 「ifconfig」命令的結果是這樣的查找字符串中的特定子字符串

eth0  Link encap:Ethernet HWaddr ***** 
     UP BROADCAST MULTICAST MTU:1500 Metric:1 
     RX packets:0 errors:0 dropped:0 overruns:0 frame:0 
     TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 
     collisions:0 txqueuelen:1000 
     RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) 

lo  Link encap:Local Loopback 
     inet addr:127.0.0.1 Mask:255.0.0.0 
     UP LOOPBACK RUNNING MTU:65536 Metric:1 
     RX packets:5439 errors:0 dropped:0 overruns:0 frame:0 
     TX packets:5439 errors:0 dropped:0 overruns:0 carrier:0 
     collisions:0 txqueuelen:0 
     RX bytes:480911 (469.6 KiB) TX bytes:480911 (469.6 KiB) 

wlan1  Link encap:Ethernet HWaddr ***** 
     UP BROADCAST MULTICAST MTU:1500 Metric:1 
     RX packets:0 errors:0 dropped:0 overruns:0 frame:0 
     TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 
     collisions:0 txqueuelen:1000 
     RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) 

wlan5  Link encap:Ethernet HWaddr ***** 
     inet addr:***** Bcast:***** Mask:****** 
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
     RX packets:30423 errors:0 dropped:5903 overruns:0 frame:0 
     TX packets:14879 errors:0 dropped:1 overruns:0 carrier:0 
     collisions:0 txqueuelen:1000 
     RX bytes:4968104 (4.7 MiB) TX bytes:1465216 (1.3 MiB) 

我想從這個字符串中提取第一個「wlan」,它是wlan1。順序總是相同的,但是第一個wlan可能是「wlan0」,「wlan1」等等......我可以像這樣得到它,但是我想知道有沒有更好的方法來做到這一點?

parsing_string = `ifconfig` 

position= parsing_string.index('wlan') 
puts parsing_string[position..position+4] 

回答

2

如果沒有wlanX接口怎麼辦?由於:index可能返回nil,你會擁有NoMethodError

我更喜歡嘗試像:puts parsing_string[/(wlan\d)/, 1]

+0

謝謝你,你是對的。 –

+0

不客氣。 – radubogdan