![linux/solaris + 검증 파일에 유효한 IP 주소가 중복됨](https://linux55.com/image/44323/linux%2Fsolaris%20%2B%20%EA%B2%80%EC%A6%9D%20%ED%8C%8C%EC%9D%BC%EC%97%90%20%EC%9C%A0%ED%9A%A8%ED%95%9C%20IP%20%EC%A3%BC%EC%86%8C%EA%B0%80%20%EC%A4%91%EB%B3%B5%EB%90%A8.png)
파일에서 중복 IP를 찾는 가장 좋은 방법은 무엇입니까? (이 스크립트에는 ksh 스크립트가 있으며 중복 IP를 확인하는 함수를 작성해야 합니다.)
예를 들어, config_IP.txt 파일에 IP - 192.1926.23.52가 두 번 존재하는 경우 "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}}'