Pau*_*ira 4 regex linux bash sed
我正在开发一个 bash 脚本,我试图从打开的网络接口获取 IPv4 地址,在此操作中我使用ip addr和sed,但出现问题,因为我无法从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)
我尝试了一些正则表达式,但它只给出错误或空行!我怎样才能实现这个目标?
尝试这个
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)。
| 归档时间: |
|
| 查看次数: |
6581 次 |
| 最近记录: |