使用正则表达式解析ifconfig响应

时间:2012-10-12 11:50:53

标签: regex

我想从以下输出中检索IP地址。

vmnet1    Link encap:Ethernet 
          inet addr:192.168.185.1  Bcast:192.168.185.255  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

我想要获取IP&掩码和结果将是

192.168.185.1

255.255.255.0

谁能告诉我正则表达式?

4 个答案:

答案 0 :(得分:0)

我做了第三次尝试,就在这里。

(addr|Mask):([0-1]{1}[0-9]{1,2}|2[0-4][0-9]|25[0-5]|[0-9]{1,2}).([0-1]{1}[0-9]{1,2}|2[0-4][0-9]|25[0-5]|[0-9]{1,2}).([0-1]{1}[0-9]{1,2}|2[0-4][0-9]|25[0-5]|[0-9]{1,2}).([0-1]{1}[0-9]{1,2}|2[0-4][0-9]|25[0-5]|[0-9]{1,2})

它现在只选择有效的IP地址,只要前面有addr或Mask。

答案 1 :(得分:0)

例如:

/addr\:([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}).*Mask\:([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})/

答案 2 :(得分:0)

尝试以下awk行:

awk -F'[ :]' '/inet addr/{print $13 "\n" $19}'

答案 3 :(得分:0)

如果您确定您的格式是一致的,那么这样简单的事情应该可以解决问题:

inet addr:([^\sB]*).*Mask:(.*)$