最近某交换机相关日志的输出中,需要提取到所有的IP信息,便于网络相关工程师分析统计。这个都通过简单的awk命令就可以实现。awk对字符操作可以使用正则表达式,并记录下分组,在使用r{n,m}重复匹配的语法时,需要添加–re-interval参数。如下:

1awk --re-interval '{match($0,/([0-9]{1,3}\.){3}[0-9]{1,3}/,a); print a[0]}' info.log |grep -v '^$'

如果文件中有”IP:端口”这样的格式,不能可以很方便的进行匹配,命令更改成如下即可:

1awk --re-interval '{match($0,/([0-9]{1,3}\.){3}[0-9]{1,3}:[0-9]{1,5}/,a); print a[0]}' info.log|grep -v '^$'