在字符串之前提取 IP

Extract IPs before string

我有这段文字:

111.11.1.111(*)222.22.2.221(mgn)333.33.3.333(srv)
111.11.1.111(*)333.33.3.333(srv)222.22.2.222(mgn)
222.22.2.223(mgn)111.11.1.111(*)333.33.3.333(srv)

我只想知道之前的IP(mgn),输出:

222.22.2.221
222.22.2.222
222.22.2.223

谢谢

通过grep,

$ grep -oP '(?:\d{1,3}\.){3}\d{1,3}(?=\(mgn\))' file
222.22.2.221
222.22.2.222
222.22.2.223

通过sed,

$ sed 's/.*\b\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\)(mgn).*//g' file
222.22.2.221
222.22.2.222
222.22.2.223