iBetter Books
수정

실전 패턴 모음

이론을 배웠으니 바로 쓸 수 있는 패턴을 모아봤습니다. 실무에서 자주 마주치는 형식들입니다. 처음부터 암기할 필요는 없습니다. 필요할 때 찾아서 쓰다 보면 자연스럽게 익혀집니다.

패턴 작성 팁은 하나입니다. 단순한 것부터 시작해서 점진적으로 정교하게 만드세요. 완벽한 패턴을 처음부터 쓰려 하면 막힙니다.

자주 쓰는 패턴 레시피

이메일 주소

수준 패턴 설명
간단 [^@]+@[^@]+ @ 앞뒤에 뭔가 있는 것
보통 [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} 일반적인 이메일 형식
cat > /tmp/contacts.txt << 'EOF'이름: 김철수, 이메일: [email protected]이름: 이영희, 이메일: [email protected]이름: 박민준, 이메일: invalid-email이름: 최수진, 이메일: [email protected]이름: 잘못된, 이메일: @nodomain.comEOFgrep -E "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}" /tmp/contacts.txt
이름: 김철수, 이메일: [email protected]
이름: 이영희, 이메일: [email protected]
이름: 최수진, 이메일: [email protected]

IP 주소

수준 패턴 설명
간단 [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+ 숫자.숫자.숫자.숫자
보통 [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} 각 옥텟 1~3자리
cat > /tmp/network.txt << 'EOF'서버 A: 192.168.1.100서버 B: 10.0.0.5잘못된 주소: 999.999.999.999게이트웨이: 192.168.1.1텍스트만: 서버없음EOFgrep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" /tmp/network.txt
서버 A: 192.168.1.100
서버 B: 10.0.0.5
잘못된 주소: 999.999.999.999
게이트웨이: 192.168.1.1

999.999.999.999도 형식은 맞습니다. 실제 유효 범위(0~255) 검증은 정규표현식만으로는 복잡하므로 스크립트 로직으로 추가 검증합니다.

전화번호 (한국)

형식 패턴
010-1234-5678 010-[0-9]{4}-[0-9]{4}
010 또는 011 계열 01[0-9]-[0-9]{3,4}-[0-9]{4}
지역번호 포함 0[0-9]{1,2}-[0-9]{3,4}-[0-9]{4}
cat > /tmp/phones.txt << 'EOF'김철수: 010-1234-5678이영희: 02-345-6789박민준: 031-456-7890최수진: 010-9876-5432잘못된: 12-3456-789EOFgrep -E "0[0-9]{1,2}-[0-9]{3,4}-[0-9]{4}" /tmp/phones.txt
김철수: 010-1234-5678
이영희: 02-345-6789
박민준: 031-456-7890
최수진: 010-9876-5432

날짜 (YYYY-MM-DD)

패턴 설명
[0-9]{4}-[0-9]{2}-[0-9]{2} 기본 날짜 형식
20[0-9]{2}-[0-9]{2}-[0-9]{2} 2000년대 날짜
grep -E "[0-9]{4}-[0-9]{2}-[0-9]{2}" /tmp/fixed.log
2026-04-24 09:01:00 서버 시작
2026-04-24 09:05:30 요청 처리 시작
2026-04-24 09:10:15 오류 발생
2026-04-24 09:15:00 서버 종료

URL

패턴 설명
https?://[^[:space:]]+ http 또는 https URL
cat > /tmp/urls.txt << 'EOF'공식 사이트: https://www.example.comAPI 주소: http://api.example.com/v1/users깃허브: https://github.com/user/repo잘못된: ftp://old-protocol.com텍스트만: 주소없음EOFgrep -E "https?://[^[:space:]]+" /tmp/urls.txt
공식 사이트: https://www.example.com
API 주소: http://api.example.com/v1/users
깃허브: https://github.com/user/repo

ftp는 https?에 매칭되지 않으므로 제외됩니다.

기타 자주 쓰는 패턴

용도 패턴 grep 명령 예시
숫자만으로 구성된 줄 ^[0-9]+$ grep -E "^[0-9]+$" file
공백 줄 ^[[:space:]]*$ grep -E "^[[:space:]]*$" file
빈 줄 ^$ grep "^$" file
주석 줄 (# 시작) ^[[:space:]]*# grep -E "^[[:space:]]*#" file
주석과 빈 줄 제외 ^[^#] + -v "^$" grep -v "^#" file | grep -v "^$"
파일 경로 (절대) ^/[^[:space:]]+ grep -E "^/[^ ]+" file
16진수 색상 #[0-9a-fA-F]{6} grep -E "#[0-9a-fA-F]{6}" file

주석과 빈 줄 제외 — 설정 파일 보기

실무에서 아주 자주 씁니다. 설정 파일은 주석이 많아서 실제 설정이 몇 개 없는지 보기 어렵습니다.

# /etc/ssh/sshd_config 실제 설정만 보기 (주석, 빈 줄 제외)grep -v "^[[:space:]]*#" /etc/ssh/sshd_config | grep -v "^[[:space:]]*$"

또는 한 번에 처리합니다.

grep -E "^[^#[:space:]]" /etc/ssh/sshd_config

패턴 작성 팁

처음부터 완벽한 패턴을 쓰려 하면 막힙니다. 단계별로 발전시키는 방식이 효과적입니다.

이메일 패턴 발전 과정.

# 1단계: @ 기호만 있으면 됨grep "@" /tmp/contacts.txt# 2단계: @ 앞뒤에 뭔가 있어야 함grep -E ".+@.+" /tmp/contacts.txt# 3단계: @ 앞은 이메일에 허용된 문자들grep -E "[a-zA-Z0-9._%+-]+@.+" /tmp/contacts.txt# 4단계: @ 뒤도 도메인 형식이어야 함grep -E "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}" /tmp/contacts.txt

각 단계마다 실제 데이터로 테스트하면서 패턴을 보완합니다. 단계 3에서 잘못된 이메일이 잡힌다면 단계 4로 넘어갑니다.

테스트 도구 활용.

패턴을 만들 때 echo와 grep을 조합해 빠르게 테스트합니다.

# 패턴이 맞는지 빠른 테스트echo "[email protected]" | grep -E "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"echo "invalid-email" | grep -E "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"

첫 번째 echo는 매칭되어 출력되고, 두 번째는 출력이 없습니다. 이 방식으로 패턴이 올바른지 즉시 확인합니다.