我的文件中包含以下日志:
Aug 27 18:41:44 Testlab nixc[27354]: 207416484 {10.20.21.106:52907 10.20.21.27:80} http traffic
我只想提取ips示例:
10.22.39.106 10.242.29.27
我试过了
grep -E -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}.*[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' log
我仍然得到
10.20.21.106:52907 10.20.21.27
10.20.21.106:52907 10.20.21.27
10.20.21.106:52907 10.20.21.27
10.20.21.106:52907 10.20.21.27
也许有些
sed
或cut
可以解决问题?先感谢您。
最佳答案
不知道这是否可以与grep
一起使用:
\d{1,3}(?:\.\d{1,3}){3}
我在网站上发布了一个链接,您可以在其中测试像jsfidle这样的正则表达式,但是显然我还不能发布链接,谷歌搜索它;)
编辑:
在这里,你去:
egrep -o '[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}' /var/log/auth.log >> test.log
关于regex - Grep regex捕获不带端口的IP套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18622206/