[번외] 정규 표현식
- 텍스트 검색, 매칭, 조작을 위한 강력한 도구
- 다양한 유틸리티와 함께 사용되며, 텍스트 파일에서 패턴을 검색하거나 변환하는 데 널리 사용된다.
- 리눅스에서 정규 표현식을 사용하여 텍스트를 처리하는 주요 명령어로는
grep,sed,awk등이 있다.
정규 표현식 기본
- 문자 매칭
-
.: 임의의 한 문자와 매칭.grep 'a.b' file.txt- ‘a’와 ‘b’ 사이에 임의의 한 문자가 있는 패턴을 검색.
-
- 문자 클래스
-
[]: 대괄호 안의 문자 중 하나와 매칭.grep '[aeiou]' file.txt- 파일에서 모음(a, e, i, o, u)이 포함된 줄을 검색.
-
[^]: 대괄호 안에 없는 문자와 매칭.grep '[^0-9]' file.txt- 숫자가 아닌 문자가 포함된 줄을 검색.
-
- 반복
-
``: 0번 또는 그 이상 반복.
grep 'fo*' file.txt- ‘f’ 다음에 ‘o’가 0번 이상 반복되는 패턴을 검색.
-
+: 1번 또는 그 이상 반복 (일반적으로grep에서는E옵션을 사용해야 함).grep -E 'fo+' file.txt- ‘f’ 다음에 ‘o’가 1번 이상 반복되는 패턴을 검색.
-
?: 0번 또는 1번 반복.grep -E 'fo?' file.txt- ‘f’ 다음에 ‘o’가 0번 또는 1번 나오는 패턴을 검색.
-
{}: 특정 횟수 반복.grep -E 'o{2}' file.txt- ‘o’가 정확히 2번 반복되는 패턴을 검색.
-
- 위치
-
^: 행의 시작.grep '^Hello' file.txt- ‘Hello’로 시작하는 줄을 검색.
-
$: 행의 끝.grep 'World$' file.txt- ‘World’로 끝나는 줄을 검색.
-
정규 표현식을 사용하는 리눅스 명령어
grep
-
기본 사용법
grep 'pattern' file.txt -
확장된 정규 표현식 사용 (
E옵션)grep -E 'pattern' file.txt -
대소문자 구분 없이 검색 (
i옵션)grep -i 'pattern' file.txt -
행 번호 포함 출력 (
n옵션)grep -n 'pattern' file.txt
sed
-
기본 사용법
sed 's/pattern/replacement/' file.txt -
파일 내 모든 패턴 교체
sed 's/pattern/replacement/g' file.txt -
여러 패턴을 동시에 교체
sed -e 's/pattern1/replacement1/' -e 's/pattern2/replacement2/' file.txt
awk
-
기본 사용법
awk '/pattern/ {print $0}' file.txt -
정규 표현식과 함께 필드 사용
awk '$1 ~ /pattern/ {print $0}' file.txt -
정규 표현식으로 패턴 매칭
awk '/pattern/ {print $1, $3}' file.txt
예제
-
모든 이메일 주소 검색
grep -E '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}' file.txt -
특정 단어로 시작하는 줄 삭제 (
sed)sed '/^pattern/d' file.txt -
특정 패턴을 포함하는 줄만 출력 (
awk)awk '/pattern/ {print $0}' file.txt