반응형
이번 포스팅은 바로 전에 올린 몇몇 특수문자들의 특징에 대한 다음편이라고 보면 좋을 것 같다. 특히 grep 명령어는 정규 표현식과 자주 같이 사용되는데 이에 대해 같이 설명하면 좋으나 이 내용은 나중에 따로 "Linux 명령어" 카테고리에 올려놓도록 하겠다.
일반적으로 regex 또는 regexp로 정의되기도 하는 정규 표현식(Regular Expression)은 텍스트 데이터에서 패턴 일치 및 조작 매커니즘을 제공하는 언어이다. 이들은 grep, sed, awk와 같은 다양한 Linux 도구와 특정 패턴을 기반으로 텍스트를 검색, 필터링 및 수정하기 위한 많은 프로그래밍 언어에 사용된다.
정규식은 검색 패턴을 형성하는 일련의 문자로 주요 구성 요소 중 일부는 다음과 같다.
구성 요소
- 리터럴 문자: 문자, 숫자 및 구두점과 같이 자신과 일치하는 일반 텍스트 문자다.
- 메타문자: 정규 표현식에서 특정한 의미를 갖는 특수 문자다.
.: 개행 문자를 제외한 모든 단일 문자와 일치한다.
^: 줄의 시작과 일치한다.
$: 줄의 끝과 일치한다.
*: 선행 문자 또는 그룹의 0개 이상의 발생과 일치한다.
+: 하나 이상의 선행 문자 또는 그룹과 일치한다.
?: 선행 문자 또는 그룹의 0개 또는 1개 항목과 일치한다.
\: 다음 문자의 특별한 의미를 이스케이프하여 리터럴 문자로 만든다.
[...]: 괄호 안의 문자 중 하나와 일치하는 문자 클래스를 정의한다.
[^...]: 대괄호 안에 있지 않은 모든 문자와 일치하는 부정 문자 클래스를 정의한다.
{n}: 선행 문자 또는 그룹의 정확히 n번 항목과 일치한다.
{n,}: 선행 문자 또는 그룹의 n개 이상의 발생과 일치한다.
{n,m}: 선행 문자 또는 그룹의 최소 n개 및 최대 m개 발생과 일치한다.
|: 교대를 나타내며 왼쪽 또는 오른쪽에 있는 표현식의 일치를 허용한다.
(...): 문자 또는 표현식을 함께 그룹화하여 한정 기호를 전체 그룹에 적용할 수 있다. - POSIX 문자 클래스: 일반적으로 사용되는 문자 그룹에 대해 미리 정의된 문자 클래스다.
[:alnum:]: 영숫자 문자(문자 및 숫자).
[:alpha:]: 알파벳 문자(글자).
[:digit:]: 숫자(숫자).
[:lower:]: 소문자.
[:upper:]: 대문자.
[:punct:]: 구두점 문자.
[:space:]: 공백, 탭 및 줄 바꿈을 포함한 공백 문자
grep 명령과 함께 정규식 사용 예
특정 단어로 시작하는 줄 찾기
$ grep '^apple' fruits.txt
3글자 단어가 포함된 줄 찾기
$ grep -E '\b[a-zA-Z]{3}\b' fruits.txt
숫자 뒤에 소문자가 있는 행 찾기
$ grep -E '[0-9][a-z]' file.txt
반응형
'Linux > Linux 이론' 카테고리의 다른 글
[Linux 이론] 리눅스 보안 SELinux (0) | 2023.03.23 |
---|---|
[Linux 이론] 리다이렉션 기호(>, >>) 활용 (0) | 2023.03.21 |
[Linux 이론] 특정 특수문자의 역할 (0) | 2023.03.20 |
[Linux 이론] 리눅스 스크립팅 언어 (sh, bash, PowerShell) + Ansible과의 차이점 (0) | 2023.03.20 |
[Linux 실습] FTP로 원격 접속 시 경고 메세지 출력 (0) | 2023.03.19 |