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)
但它没有用
截至目前,您的问题是“如何从字符串 '-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