来看看,这个问题是什么意思

来看看,这个问题是什么意思

LOCAL_IP=$(/sbin/ifconfig eth0:1 |sed -n 's/\([[:space:]]*inet addr:\)\([^[:space:]]*\)\(.*\)/\2/p')

是什么意思,谢了      
自己试一下, 然后看看结果      
我就是每一个什么意思不知道,整体当然知道了,是我们公司的文档啊,      
LOCAL_IP=$(/sbin/ifconfig eth0:1 |sed -n 's/\([[:space:]]*inet addr:\)\([^[:space:]]*\)\(.*\)/\2/p')

ifconifg不用说了,eth0:1是指在eth0接口上配置的第二个IP地址,或者说是eth0的alias接口。这里使用了SED的s命令:s/find/replace/,然后指定p命令输出,因为前面用了-n参数使之变成了silent,所以只有显式的使用p命令才会导致产生输出。
先看find部分:\([[:space:]]*inet addr:\)\([^[:space:]]*\)\(.*\)
这里又用\(...\)分成3个组,它们是串接在一起的:
Grouping A:[[:space:]]*inet addr:
事实上,前面的[[:space:]]指的是All whitespace chars。这个Grouping表示的意思就是查找以'inet addr:'结尾,前面是零个或多个空白字符的串。
Grouping B:[^[:space:]]*
表示任何前后都没有空白字符的串。
Grouping C:.*
表示该行任何的字符,‘.’匹配任何非换行单个字符,而‘*’匹配恰处于它之前的零个或多个所给字符。
再看replace部分,这里用到的规则:
\1 through \9 are replaced by the corresponding group,
   if grouping \(...\) was used in the LHS.  If no grouping was used in the LHS, then \1 through \9 are replaced by literal digits.
LHS = the left-hand side ("find" part) of "s/find/repl/" command.
这里使用\2,表示Grouping B。
我们看看ifconfig eth0的输出:
eth0      Link encap:Ethernet  HWaddr 00:03:47:A4:FB:0B
          inet addr:192.168.1.243  Bcast:192.168.1.255  Mask:255.255.255.0[/COLOR]
          inet6 addr: fe80::203:47ff:fea4:fb0b/10 Scopeink
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3366540 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3385554 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:1037700556 (989.6 Mb)  TX bytes:1906433855 (1818.1 Mb)
          Interrupt:11 Base address:0x1400 Memory:feae0000-feae0038
显然就是提取了上面红色行的"192.168.1.243"部分,也就是我们想要的IP地址了。