![如何 grep /var/log/messages 中的所有唯一 IP 地址并将它们发送到另一个日志文件](https://linux22.com/image/155752/%E5%A6%82%E4%BD%95%20grep%20%2Fvar%2Flog%2Fmessages%20%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E5%94%AF%E4%B8%80%20IP%20%E5%9C%B0%E5%9D%80%E5%B9%B6%E5%B0%86%E5%AE%83%E4%BB%AC%E5%8F%91%E9%80%81%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6.png)
我正在停用旧的 Redhat 公共 BIND 服务器,并希望找到向该名称服务器发送 DNS 请求的所有唯一 IP 地址。到目前为止,这就是我能够拼凑的内容,但该命令不仅仅包含发送请求的客户端的 IP。
egrep -o [0-9]\{1,3\}[.][0-9]\{1,3\}[.][0-9]\{1,3\}[.][0-9]\{1,3\} /var/log/messages | sort | uniq -c > dns-ip-client.log
我将如何去做这项工作?
谢谢。
答案1
我认为你的引用/转义让你绊倒了。单引号往往会让事情变得更容易:
grep 'named' /var/log/messages | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'
请注意grep -E
==egrep
但“不建议直接调用 egrep 或 fgrep”