周翔 发表于 2017-5-16 11:26:09

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]
查看完整版本: Shell 命令:如何从 ifconfig 输出结果中截取 IP 地址