🚀 94sssh
Published on

2025.10.16

[모두의 리눅스] - 13. 정규 표현식

13.1. grep 명령어와 정규 표현식

grep은 문자열을 검색하는 명령어

grep 옵션 검색패턴 파일이름형식으로 grep bash /etc/passwd이라면 /etc/passwd에서 bash라는 문자열을 검색

옵션내용
-n행 번호를 출력
-i대소문자를 구별하지 않고 검색
-v검색할 문자열이 나타나지 않는 행을 출력

정규 표현식이란

정규 표현식을 사용하면 조건에 맞는 문자열 집합을 표현할 수 있음

*, {, }, $ 등의 기호는 메타 문자로 특별한 의미를 지니며, grep에서 정규 표현식을 사용하고 싶을 때는 셸이 정규 표현식을 확장하지 않도록 'ab*'처럼 작은따옴표로 감싼다.

13.2. 임의의 문자를 지정하는 메타 문자

.은 임의의 문자 하나를 의미.
문자가 아닌 점 기호 자체를 검색하고 싶을 때는 \이스케이프를 붙이면 된다. \.으로 사용

[]는 임의의 문자 하나가 아닌 여러 문자 중 하나를 의미. 이 메타 문자는 괄호 안에 있는 문자 중 하나를 의미. -을 사용해 범위로 지정도 가능

메타 문자내용
.임의의 문자 하나
[][]안에 포함된 임의의 문자 하나
[^ ][]안에 포함되지 않는 문자

13.3. 위치를 지정하는 메타 문자

^$로 두 메타 문자를 같이 쓰면 시작이 끝인 행, 즉 빈 행을 의미. 빈 행을 제거하는 용도로 사용할 수 있음.

메타 문자내용
^문자열행의 첫 부분을 의미
문자열$행의 마지막을 의미

13.4. 반복을 지정하는 메타 문자

확장 정규 표현식을 사용할 때는 -E 옵션을 지정해야 한다.
리눅스의 grep(GNU grep)은 -E를 붙이지 않아도 메타 문자에 \를 붙여 확장 정규 표현식을 사용할 수 있지만 다른 명령어에서는 사용할 수 없으므로 추천하지 않음.

기본 정규 표현식확장 정규 표현식의미
**0회 이상 반복
없음+1회 이상 반복
없음?0회 또는 1회 반복
\{m,n\}{m,n}m회 이상 n회 이하 반복
\{m\}{m}m회 반복
\{m,\}{m,}m회 이상 반복

13.5. 그 외의 메타 문자

기본 정규 표현식확장 정규 표현식의미
\(\)()그룹화할 때 사용
없음|여러 정규 표현식을 OR 조건으로 연결