[Shell Script] 정해진 자릿수 숫자에 하이픈 넣기
정해진 자릿수 숫자에 하이픈 넣기
우편번호나 전화번호 같은 텍스트에서 정해진 자리에 하이픈을 넣거나 삭제하는 스크립트 입니다 .
스크립트
#!/bin/sh
d_flag=0 #1
while getopts "d" option #2
do
case $option in
d)
d_flag=1
;;
\?)
exit 1
;;
esac
done
shift $(expr $OPTIND - 1) #3
filename="$1"
if [ ! -f "$filename" ]; then
echo "대상 파일이 존재하지 않습니다."
exit 1
fi #4
if [ "$d_flag" -eq 1 ]; then #5
awk '{print $1}' "$filename" | grep '^[0-9]\{3\}-[0-9]\{4\}$' | sed "s/-//" #6
else
awk '{print $1}' "$filename" | grep '^[0-9]\{7\}$' | sed "s/\(...\)/\1-/" #7
fi
결과
- 이 스크립트는 7자리 숫자가 적힌 파일에서 3번째와 4번째 숫자 사이에 하이픈을 넣거나, 하이픈이 있는 7자리 숫자에서 하이픈을 삭제하여 표시합니다 .
- 스크립트 옵션으로 -d를 지정하면 하이픈을 삭제하고 아니면 추가합니다.
- 우편번호를 비롯한 숫자텍스트에 응용할 수 있습니다 .
#1 : 옵션 지정 플래그 변수 d_flag를 정의합니다. -d옵션이 지정되었는지 판별하는 변수 입니다 .
d_flag=0 #1
#2 : getopts 명령어를 사용해서 실행할 때 -d 옵션이 지정되었는지 판별해서 지정했다면 1을 셸변수 d_flag에 대입합니다 .
while getopts "d" option #2
do
case $option in
d)
d_flag=1
;;
\?)
exit 1
;;
esac
done
#3 :우선 위치 파라미터에서 명령행 인수로 지정한 옵션을 shift 명령어로 당깁니다 .
이러면 위치 파라미터 $1에 명령행 인수로 지정한 파일명이 저장되므로 $1을 셸 변수 filename에 대입합니다 .
shift $(expr $OPTIND - 1) #3
filename="$1"
#4 : 지정한 우편 번호 파일이 존재하는지 확인합니다 .
if [ ! -f "$filename" ]; then
echo "대상 파일이 존재하지 않습니다."
exit 1
fi #4
#5 : 하이픈을 삭제할지 추가할지 if문으로 판단 후 분기합니다 .
#6 : 하이픈 삭제
#7 : 하이픈 추가
if [ "$d_flag" -eq 1 ]; then #5
awk '{print $1}' "$filename" | grep '^[0-9]\{3\}-[0-9]\{4\}$' | sed "s/-//" #6
else
awk '{print $1}' "$filename" | grep '^[0-9]\{7\}$' | sed "s/\(...\)/\1-/" #7
fi
댓글
댓글 쓰기