ip 주소 정렬 문제
ip 주소를 정렬하려고 하면 자릿 수 때문에 원하는 결과가 나오지 않는다.
172.16.10.10
172.16.1.100
172.16.1.1
172.16.1.9
172.16.1.11
172.16.11.100
172.26.11.10
이 내용을 엑셀을 이용하여(또는 리눅스 sort 명령을 이용하여) 정렬하면,
172.16.1.1
172.16.1.100
172.16.1.11
172.16.1.9
172.16.10.10
172.16.11.100
172.26.11.10
처럼, 원하는 결과가 나오지 않는다.
이런 경우에, ip 주소를 숫자로 변환하여 정렬하면 된다.이때, 파이썬의 ipaddress 모듈을 사용하여, ip주소를 숫자로 변환할 수 있다.
아래 코드는 파일에서 ip 주소를 읽어 숫자로 변환해 보여주는 파이썬 코드다.
import ipaddress f = open('ip.txt', 'r') data = f.read() f.close() ip = data.split('\n') for i in ip: i = i.strip() if i: ipn = int(ipaddress.ip_address(i)) print(ipn)
이제 결과를 엑셀에 같이 붙여넣고 정렬하면 원하는 결과를 볼 수 있다.