linux/solaris + 验证文件中重复的有效 IP 地址

linux/solaris + 验证文件中重复的有效 IP 地址

从文件中查找重复 IP 的最佳方法是什么(我在此脚本中有 ksh 脚本,我需要编写检查重复 IP 的函数)

例如,如果 IP - 192.1926.23.52 在文件 - config_IP.txt 中存在两次,则需要打印“duplicate IP - xxx.xxx.xxx.xxx”

  • 解决方案可以使用 ksh 或 perl oneliner、sed、awk 等

文件的格式应如下所示:

更多config_IP.txt

 # NETWORK adminstration


 192.192.23.150 192.192.23.120
 192.192.23.152 192.192.23.52      
 192.192.23.153 192.192.23.53      
 192.192.23.154 192.192.23.54      


 #NETWORK private

 192.192.23.170  192.192.23.122         
 192.192.23.172  192.192.23.126  
 192.192.23.174  192.192.23.123     
 192.192.23.177  192.192.23.121  



# NETWORK oracle internal


152.3.4.12 152.3.4.12 
152.3.4.14 152.3.4.16 


# NETWORK oracle ext

152.3.4.10 152.3.4.19 

答案1

我不确定我是否正确理解了这个问题,但是如果您想在像上面这样的文件中找到重复的 IP,只需每行放置一个 IP,然后运行它,sort然后uniq -c它将报告每行之前的相同行数:

cat config_IP.txt | sed "s/\s\s*/\n/g" | sort | uniq -c

如果您想根据该文件检查其他 IP,您可以将其与以下内容分组cat

( cat config_IP.txt; echo "12.34.56.78 90.101.121.131" ) \
    | sed "s/\s\s*/\n/g" | sort | uniq -c

grep在开始排序之前,您可能还需要添加一些内容来过滤掉不包含 IP 地址的行。

答案2

像这样的东西(假设您想检查整个文件的 IP,而不仅仅是同一行中存在的 IP):

awk '/^[0-9]/{for(i=1;i<=NF;i++)if(a[$i]++==1) print "Duplicate IP : ",$i;}' file

答案3

尝试这个:

cat config_IP.txt|egrep -v '^#|^$'|awk '{if($1==$2){print "Duplicate IP - "$1}}'

相关内容