$ ip路线获255.255.255.255 广播255.255.255 eth0 src 192.168.223.129
我只想得到192.168.223.129的IP地址,我只知道我必须使用sed命令。另外,你能描述一下使用的命令吗?
发布于 2013-01-05 17:09:34
这是一个模式匹配问题,grep是最简单和最适合这样做的工具。
您想要匹配的是单词src后面的IP地址。您可以使用此正则表达式来匹配IP地址:(\d{1,3}.){4},并使用正向后视确保IP地址与单词src类似于(?<=src )
$ 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地址,而不依赖输出的格式,比如它恰好是第一行的最后一个字。
发布于 2013-01-05 16:38:57
如果我要提取文本,第一件事就是grep/ack。
试试这个:
ip route get 255.255.255.255|grep -oP '(?<=src ).*'发布于 2013-01-05 16:47:22
使用AWK代替
这个问题更容易用AWK解决。假设这不是家庭作业,使用合适的工具来完成这项工作!例如,要将IP地址存储在变量中供以后使用,可以执行以下操作:
ip_address=$(
ip route get 255.255.255.255 |
awk '{print $NF; exit}'
)然后,您可以通过新变量访问该值。例如:
$ echo "$ip_address"
192.168.1.1https://stackoverflow.com/questions/14173592
复制相似问题