linux / solaris + проверить дублирующий действительный IP-адрес из файла

что лучший способ найти дубликат IP из файла (у меня есть скрипт ksh в этом скрипте мне нужно написать функцию, проверяющую дубликат IP)

например, если IP-192.1926.23.52 существует дважды в файле – config_IP.txt, тогда необходимо распечатать «duplicate IP – xxx.xxx.xxx.xxx»,

  • решение может быть с ksh или perl одним лайнером, 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-адреса, прежде чем начинать сортировку.

попробуй это:

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