首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从‘IP route`’命令的输出中选择IP地址?

如何从‘IP route`’命令的输出中选择IP地址?
EN

Stack Overflow用户
提问于 2013-01-05 16:07:19
回答 5查看 2.2K关注 0票数 0

$ ip路线获255.255.255.255 广播255.255.255 eth0 src 192.168.223.129

我只想得到192.168.223.129的IP地址,我只知道我必须使用sed命令。另外,你能描述一下使用的命令吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-01-05 17:09:34

这是一个模式匹配问题,grep是最简单和最适合这样做的工具。

您想要匹配的是单词src后面的IP地址。您可以使用此正则表达式来匹配IP地址:(\d{1,3}.){4},并使用正向后视确保IP地址与单词src类似于(?<=src )

代码语言:javascript
复制
$ ip route get 255.255.255.255 | grep -Po '(?<=src )(\d{1,3}.){4}'
192.168.223.129

要在grep中使用正前瞻,您需要为perl正则表达式使用-P标志,-o标志告诉grep只显示行的匹配部分,因为grep的默认行为是显示包含匹配的整行。

该解决方案独立于ip route get 255.255.255.255的输出,因为您正在搜索单词src之后的IP地址,而不依赖输出的格式,比如它恰好是第一行的最后一个字。

票数 3
EN

Stack Overflow用户

发布于 2013-01-05 16:38:57

如果我要提取文本,第一件事就是grep/ack。

试试这个:

代码语言:javascript
复制
ip route get 255.255.255.255|grep -oP '(?<=src ).*'
票数 3
EN

Stack Overflow用户

发布于 2013-01-05 16:47:22

使用AWK代替

这个问题更容易用AWK解决。假设这不是家庭作业,使用合适的工具来完成这项工作!例如,要将IP地址存储在变量中供以后使用,可以执行以下操作:

代码语言:javascript
复制
ip_address=$(
    ip route get 255.255.255.255 |
    awk '{print $NF; exit}'
)

然后,您可以通过新变量访问该值。例如:

代码语言:javascript
复制
$ echo "$ip_address"
192.168.1.1
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14173592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档