- 论坛徽章:
- 0
|
有一个变量$result, 存储的是以下内容:
eth2 Link encap:Ethernet HWaddr 00:1E:67:01:21:04
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:1080341 errors:0 dropped:0 overruns:0 frame:0
TX packets:1024529 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:663682075 (632.9 MiB) TX bytes:976556689 (931.3 MiB)
Interrupt:16 Base address:0x2020 Memory:b8c60000-b8c80000
eth3 Link encap:Ethernet HWaddr 00:1E:67:01:21:05
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:1038395 errors:0 dropped:0 overruns:0 frame:0
TX packets:1221259 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:970460899 (925.5 MiB) TX bytes:689933196 (657.9 MiB)
Interrupt:17 Base address:0x2000 Memory:b8c20000-b8c40000
现在想取4个数值,分别是eth2和eth3的RX Packets和TX Packets. 我现在的做法比较笨,用split将result分成数组,然后逐行判断比较,这是可行的。
但我想应该有很简单的办法,可是不知道正则表达式哪里写错了。看以下代码:
- my ($eth2_rx, $eth2_tx, $eth3_rx, $eth3_tx) = (0, 0, 0, 0);
- if($result_begin =~ /RX packets\:([0-9]+)(.+)TX packets\:([0-9]+)(.+)RX packets\:([0-9]+)(.+)TX packets\:([0-9]+)/) {
- ($eth2_rx, $eth2_tx, $eth3_rx, $eth3_tx) = ($1, $3, $5, $7);
- }
复制代码 |
|