鉴于这条特定的线路ifconfig,在我的情况下:
inet 192.168.2.13 netmask 0xffffff00 broadcast 192.168.2.255
如何提取192.168.2.13部分(本地IP地址),可能是正则表达式?
Ste*_*eve 57
这是使用的一种方式grep:
line='inet 192.168.2.13 netmask 0xffffff00 broadcast 192.168.2.256'
echo "$line" | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b"
Run Code Online (Sandbox Code Playgroud)
结果:
192.168.2.13
192.168.2.256
Run Code Online (Sandbox Code Playgroud)
如果您只想选择有效地址,可以使用:
line='inet 192.168.0.255 netmask 0xffffff00 broadcast 192.168.2.256'
echo "$line" | grep -oE "\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b"
Run Code Online (Sandbox Code Playgroud)
结果:
192.168.0.255
Run Code Online (Sandbox Code Playgroud)
否则,只需选择您想要使用的字段awk,例如:
line='inet 192.168.0.255 netmask 0xffffff00 broadcast 192.168.2.256'
echo "$line" | awk -v OFS="\n" '{ print $2, $NF }'
Run Code Online (Sandbox Code Playgroud)
结果:
192.168.0.255
192.168.2.256
Run Code Online (Sandbox Code Playgroud)
附录:
字界限:\b
使用此正则表达式 ((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(?=\s*netmask)