bash script2023. 4. 17. 16:54

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/562226

 

IP주소를 표시할 때 간혹 세자리 수자로 맞추어 표시되는 경우가 있다. 대부분은 192.168.0.1 이렇게 사용하지만, 특정 프로그램의 출력에서 192.168.000.001 이런 식으로 나올 수가 있는 것이다. 이렇게 표시 형태가 혼용되고 있을 경우 검색이나 비교를 위해 하나의 방식으로 통일할 수 있는데, awk 명령으로 나름 간단하게 해결된다.

awk 명령에서 -F 옵션으로 항목 구분자를 점(.)으로 지정하고, printf 명령으로 출력 형식을 지정해 주면 된다. 아래의 예시를 보자.

# 192.168.000.001 -> 192.168.0.1
echo "192.168.000.001" | awk -F '.' '{ printf("%d.%d.%d.%d\n", $1, $2, $3, $4) }'
192.168.0.1

printf 명령에서 형식을 '%d'로 지정하면 선행하는 0을 제거해 준다. 결과 출력후 줄바꿈되도록 끝부분에는 '\n' 추가.

반대로 변환할 수도 있다. 형식 옵션을 '%03d'로 지정하면 세자리 수자로 맞추고 앞에 0을 추가하라는 뜻이 된다. 아래의 예시를 보자.

# 192.168.0.1 -> 192.168.000.001
echo "192.168.0.1" | awk -F '.' '{ printf("%03d.%03d.%03d.%03d\n", $1, $2, $3, $4) }'
192.168.000.001

728x90
Posted by 반달가면