반달가면 이글루에서 백업 - 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
'bash script' 카테고리의 다른 글
[bash: awk] 다중 문자열 검색 (0) | 2023.04.17 |
---|---|
[bash: grep, sed] grep 명령에 변수를 인자로 사용할 때 정규표현식 문제 해결 (1) | 2023.04.17 |
[bash: for, sed, seq] 공백을 포함한 이름을 가진 파일들에 대한 반복 작업 (0) | 2023.04.17 |
[bash: sed] 여러개의 문자열을 각각 다른 문자열로 대체하기 (0) | 2023.04.17 |
[bash: grep] 문자열 검색후 일치하는 부분만 골라서 출력하기 (0) | 2023.04.17 |