如何匹配字符串和下一个空格之前的所有内容

tim*_*tim 5 sed awk text-processing

假设我有以下字符串:

sdffsd sfdfi -ip 192.168.1.1 sdfdf ertret 
Run Code Online (Sandbox Code Playgroud)

我想提取“192.168.1.1”或任何其他有效的IP地址(四个十进制数字,每个数字范围从0到255,用点分隔,例如172.16.254.1)

似乎最简单的方法是匹配字符串“-ip”和下一个空格之前(192.168.1.1 和 sdfdf 之间的空格)之间的所有内容。

我试过:

sed -e 's/-s \(.*\)[[:space:]]/\1/'
Run Code Online (Sandbox Code Playgroud)

但它没有用

Ale*_*ies 3

截至目前,您的问题是“如何从字符串 '-ip ' 提取到下一个空格?”。以下命令回答了这个问题。

sed -e 's/^.*-ip \([^ ]*\) .*$/\1/'

它的工作原理本质上是说“任意数量的非空格字符”:[^ ]*

$ echo "sdf sfdi -ip 192.168.1.1 sdf eret" | sed -e 's/^.*-ip \([^ ]*\) .*$/\1/' 192.168.1.1