Shell-Script

linux/solaris + 驗證文件中重複的有效 IP 地址

  • January 3, 2013

從文件中查找重複 IP 的最佳方法是什麼(我在這個腳本中有 ksh 腳本我需要編寫檢查重複 IP 的函式)

例如,如果 IP - 192.1926.23.52 在文件 - config_IP.txt 中存在兩次,則需要列印“重複 IP - xxx.xxx.xxx.xxx”

  • 解決方案可以使用 ksh 或 perl one liner、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 

像這樣的東西(假設您要檢查整個文件的 IP,而不僅僅是針對同一行中的文件):

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

我不確定我是否正確理解了這個問題,但是如果您想在上述文件中找到重複的 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 地址的行。

引用自:https://unix.stackexchange.com/questions/60163