Shell 命令:如何从 ifconfig 输出结果中截取 IP 地址
匹配的关键是正则表达式。工具可以考虑 grep 或者 sed。方案1:
借助 grep:
ifconfig | grep -Eo 'inet (addr:)?(*\.){3}*' | grep -Eo '(*\.){3}*' | grep -v '127.0.0.1'
方案2:
借助 sed:
ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?((*\.){3}*).*/\2/p'
注:sed 的 -E 选项依赖于具体的 sed 版本。如果 -E 无效,请使用 -r 替代。
另外,可以通过 ifconfig 指定要显示的的 interface。
ifconfig eth0 | ...
我在具体实践时,使用了方案2 并指定了 interface。
SERVER_IP=$(/sbin/ifconfig eth0 | sed -nr 's/.*inet (addr:)?((*\.){3}*).*/\2/p')
参见:SO
页:
[1]