![linux + 使用不规则表达式(find 命令)或 perl 的 find 机制](https://linux22.com/image/1250086/linux%20%2B%20%E4%BD%BF%E7%94%A8%E4%B8%8D%E8%A7%84%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%EF%BC%88find%20%E5%91%BD%E4%BB%A4%EF%BC%89%E6%88%96%20perl%20%E7%9A%84%20find%20%E6%9C%BA%E5%88%B6.png)
嗨,亲爱的朋友们,早上好
以下问题对于我的系统来说可能很复杂且至关重要
我有 4 台 Linux 机器,集群
我的目标是在 Linux 系统中的每个文件中找到所有类型的 IP 地址(xxx.xxx.xxx.xxx)
备注:需要扫描Linux系统中的每个文件,并验证文件是否包含IP地址,如果是,则需要打印IP
如下所示
更多/etc/inet/file.example1
182.23.2.4
255.255.0.0
10.10.1.1
19.2.*.*
127.0.0.1
更多/etc/dir/file1.example2
1.1.1.1 TCP
ETC.................
我能否得到一些有创意的建议,即搜索所有 IP 地址并打印它们
莉迪亚
答案1
这将打印包含类似 IP 地址的整行内容。它不会检查其八位字节是否在 0-255 范围内。
grep -Er '\<([0-9]{1,3}\.){3}[0-9]{1,3}\>' /*
要仅打印地址而不打印行的其余部分,请添加该-o
选项。要禁用打印文件名,请添加该-h
选项。
您可以用 替换\<
和\>
分隔符[[:space:]]
。
编辑:
这是一个可能适合包含星号的情况的:
grep -Er '[[:space:]]((\*|[0-9]{1,3})\.){3}(\*|[0-9]{1,3})[[:space:]]' /*