按IP地址查找网络接口-Linux/Bash

按IP地址查找网络接口-Linux/Bash,linux,ubuntu,Linux,Ubuntu,我想知道如何使用sed按IP地址查询,它将显示使用它的接口名称 例如 ipconfig -a | grep 10.0.0.10 我希望它与ETH0一起返回您应该使用此comand: ifconfig | grep -B1 "inet addr:10.0.0.10" | awk '$1!="inet" && $1!="--" {print $1}' 希望这有帮助 如果您想要sed特定的解决方案,您可以尝试此方法。它的工作原理有点难理解,但最终这种组合起作用了 ifconfig

我想知道如何使用sed按IP地址查询,它将显示使用它的接口名称

例如

ipconfig -a | grep 10.0.0.10

我希望它与ETH0一起返回您应该使用此comand:

ifconfig | grep -B1 "inet addr:10.0.0.10" | awk '$1!="inet" && $1!="--" {print $1}'

希望这有帮助

如果您想要sed特定的解决方案,您可以尝试此方法。它的工作原理有点难理解,但最终这种组合起作用了

 ifconfig | sed -n '/addr:10.0.0.10/{g;H;p};H;x' | awk '{print $1}'
如果要通过脚本将其作为参数,请在10.0.0.10中使用“$1”左右


Sed手册供参考:

如果OP在使用纯旧的
grep 10.0.0.10
后找不到它们,那么添加到字符串以查找仍然找不到,我不确定这会有什么帮助。你能解释更多吗?什么是
OP
,如果它与给定的ip地址匹配,你会打印出以太网名称,对吗?OP=原始海报,顺便说一句,这正是我想要的,谢谢:)不,任何带有
grep x | awk'{y}'
的东西通常写得更好
awk'/x/{y}“
-这是一个,尽管它在结尾追加了一个换行符?为什么会这样?首先,它是
ifconfig
ipconfig
是一个DOS命令(我猜这是一个打字错误)。那么,
ifconfig-a
本身的输出是什么呢?您的系统上是否有IP为
10.0.0.10
的NIC?注意
systemd
init OS的
ipconfig
可能未安装,而是使用
IP
命令(
IP addr
ifconfig | grep -B1 10.0.0.10 | grep -o "^\w*"