728x90
[Shell Script] 쉘에서 정규표현식 사용하기
정규표현식은 문자열 처리 및 패턴 매칭을 통해 데이터를 효율적으로 다루는 데에 매우 유용하다.
`bash`, `grep`, `awk`, `sed` 등의 유틸리티를 활용하면, 쉘 스크립트에서 다양한 방식으로 정규표현식을 사용할 수 있다.
[[]] 를 이용한 정규표현식 매칭
bash 스크립트에서 `[[ ]]`는 정규 표현식을 지원한다. `=~` 연산자를 사용하면 문자열이 특정 패턴과 일치하는지를 확인할 수 있다.
아래는 정규표현식을 통해 유효한 이메일 형식인지 검증하는 예제다.
#!/bin/bash
email='test@example.com"
if [[ $email =~ ^[a-zA-Z0-9._%+-]+\.[a-zA-Z]{2,}$ ]]; then
echo "유효한 이메일 주소입니다."
else
echo "유효하지 않은 이메일 주소입니다."
fi
grep을 활용한 패턴 검색
`grep`은 파일이나 입력에서 정규표현식을 이용해 특정 패턴을 검색하는 데 적합하다.
예를 들어, 정규표현식과 `grep`을 사용하여 로그 파일의 특정 패턴을 찾는 등의 활용이 가능하다.
#!/bin/bash
# "ERROR"로 시작하는 모든 줄 출력
log_file="application.log"
grep "^ERROR" $log_file
sed를 활용한 문자열 변환
`sed`는 강력한 스트림 편집기로, 정규표현식을 사용해 텍스트를 대체하거나 삭제할 수 있다.
#!/bin/bash
text = "Hello, World"
# "World"를 "Shell Script"로 변경
echo $text | sed 's/World/Shell Script/'
awk를 활용한 데이터 처리
`awk`는 정규표현식을 기반으로 텍스트 데이터를 분석하거나 변환하는 데 유용하다.
#!/bin/bash
# CSV 파일 예시
echo -e "Name,Age,Email\n\John,30,john@test.com\nJane,25,jane@test.com" \
> data.csv
# 이메일 주소만 출력
awk -F, '/@/ {print $3}' data.csv
`-F,`는 필드 구분자를 쉼표로 설정하고, `/@/`는 이메일 주소가 포함된 줄만 필터링한다.
반응형
'🌏 OS > Linux' 카테고리의 다른 글
[Shell Script] 한 줄씩 처리하기 (0) | 2025.01.14 |
---|---|
[Shell Script] 스크립트에서 환경 변수가 적용되지 않는 경우 (0) | 2025.01.09 |
[Linux] awk (0) | 2024.08.07 |
[Linux] 파일 시간 확인하기 (0) | 2024.08.02 |
[Linux] bash에서 yaml 파일 load하기 (0) | 2024.07.18 |