linux - 在字符串之前提取 IP

标签 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

谢谢

最佳答案

通过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

关于linux - 在字符串之前提取 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28480261/

相关文章:

linux - 我可以在 awk 的不同代码块中使用不同的分隔符吗?

xml - 使用 AWK 检索特定 XML 标记之间的文本

linux - 在 linux 中使用 crontab 在每次打开终端时显示一条消息?

linux - 动态进程池

linux - bash 线程限制

regex - sed 或 perl 仅当第一个内部单词匹配时才删除外部括号

linux - 第一次纹身,有点紧张.. 请检查我的计算! :)

bash - bash 程序中的连续管道

mysql - Bash:mysqlimport 命令在没有提示的情况下写入数据库

bash - 在 shell (bash) 中如何在管道中执行多个命令?