Shell-Script
linux/solaris + 驗證文件中重複的有效 IP 地址
從文件中查找重複 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 地址的行。