Shell 命令:如何从 ifconfig 输出结果中截取 IP 地址

匹配的关键是正则表达式。工具可以考虑 grep 或者 sed。

方案1:

借助 grep:

ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'

方案2:

借助 sed:

ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'

 注:sed 的 -E 选项依赖于具体的 sed 版本。如果 -E 无效,请使用 -r 替代。

另外,可以通过 ifconfig 指定要显示的的 interface。

ifconfig eth0 | ...

我在具体实践时,使用了方案2 并指定了 interface。

SERVER_IP=$(/sbin/ifconfig eth0 | sed -nr 's/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p')

参见:SO

猜你喜欢

转载自wxl24life.iteye.com/blog/2026309