在字符串之前提取IP

时间:2015-02-12 14:38:58

标签: linux bash awk cut

我有这样的文字:

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

感谢

1 个答案:

答案 0 :(得分:0)

通过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).*/\1/g' file
222.22.2.221
222.22.2.222
222.22.2.223