grep用于查找除一组给定地址之外的IP

时间:2014-10-14 15:13:35

标签: shell grep

使用时

grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}"  

计算文件中的IP地址,是否可以从计数中排除一个或多个给定的IP?

2 个答案:

答案 0 :(得分:2)

如果你只有一个ip要排除:

grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | grep -vcF "<your ip>"

如果您有多个,我建议您将它们保存在文件(iplist.txt)中,每行一个,然后:

grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | grep -vcF -f iplist.txt

管道中第二个grep的说明

grep --invert-match --count --fixed-strings --file=iplist.txt

我写了很长的选项来清除它们的含义。

它只是从输入中排除(--invert-match),提供的文件(--file=iplist.txt)中列出的每一行( ip )而不是正常输出,它打印得到的行数(--count) - &gt; 只是为了避免再次使用wc -l

进行管道铺设 强制grep不要解释特殊字符(在这种情况下为--fixed-strings)需要

.选项。

答案 1 :(得分:1)

最简单的方法是通过另一个反向grep(参数-v):

grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | grep -v "10.0.0.*"