bash 脚本 - sed 返回 IP 地址

Pau*_*ira 4 regex linux bash sed

我正在开发一个 bash 脚本,我试图从打开的网络接口获取 IPv4 地址,在此操作中我使用ip addrsed,但出现问题,因为我无法从sed获取 IP 。

所以,脚本在某个时候有这样的:

ip addr show dev eth0 | grep "inet "
Run Code Online (Sandbox Code Playgroud)

据说这会返回:

inet 192.168.1.3/24 brd 192.168.1.255 scope global eth0
Run Code Online (Sandbox Code Playgroud)

对于sed,我想要这个:

192.168.1.3/24
Run Code Online (Sandbox Code Playgroud)

我尝试了一些正则表达式,但它只给出错误或空行!我怎样才能实现这个目标?

tin*_*ink 5

尝试这个

ip addr show dev eth0 | sed -nr 's/.*inet ([^ ]+).*/\1/p'
Run Code Online (Sandbox Code Playgroud)

编辑:根据要求提供解释性文字。

-n in sed suppressed automatic printing of input line
-r turns on extended regular expressions




s/.*inet ([^ ]+).*/\1/p
Run Code Online (Sandbox Code Playgroud)

搜索后面跟着 inet 和一个空格的任何内容,记住该空格后面不是空格的所有内容(即括号),后面跟着任何内容,然后用记住的内容 [\1](IP 地址)替换所有内容,然后打印该行(p)。