정규 표현식 (Regular Expressions), 줄여서 regex 는 패턴 기반 텍스트 선택을 위한 강력한 도구입니다. 이를 이해하는 것은 Linux 에서 텍스트 조작을 마스터하는 데 필수적입니다. Linux 를 배우기 위한 많은 앱이 있지만, regular expression linux와 같은 핵심 개념을 파고드는 것이 Linux 고급 숙련도로 가는 가장 빠른 길입니다. 정규 표현식은 *와 같은 와일드카드와 유사한 특수 표기법을 사용합니다.
거의 모든 프로그래밍 언어에서 보편적으로 사용되는 가장 일반적인 regex 연산자들을 살펴보겠습니다. 다음 텍스트를 예제로 사용하겠습니다:
sally sells seashells
by the seashore
줄의 시작에 고정하기
캐럿 ^ 기호는 줄의 시작과 일치합니다. 이 기호는 패턴이 시작 부분에만 나타나도록 보장합니다.
^by
이 패턴은 "by the seashore" 줄과는 일치하지만 "sally sells seashells" 줄과는 일치하지 않습니다.
줄의 끝에 고정하기
달러 $ 기호는 줄의 끝과 일치합니다. 이는 ^ 앵커의 대응되는 기호입니다.
seashore$
이 패턴은 줄이 "seashore"로 끝나기 때문에 "by the seashore" 줄과 일치합니다.
모든 단일 문자 일치시키기
마침표 .는 모든 단일 문자와 일치하는 와일드카드입니다.
b.
예제에서 이것은 "by"와 일치합니다.
문자 집합을 위한 대괄호 사용하기
대괄호 []를 사용하면 일치시킬 문자 집합을 지정할 수 있습니다. 이는 . 와일드카드보다 더 많은 제어를 제공합니다.
s[ae]lls
이것은 "sells"와 일치하며 "salls"와도 일치합니다.
또한 대괄호를 사용하여 일치시키지 않을 문자를 지정할 수도 있습니다. 캐럿 ^가 대괄호 안에 첫 번째 문자로 오면, 해당 집합을 부정하여 나열된 문자를 제외한 모든 문자와 일치합니다.
s[^e]lls
이것은 "sells"가 아닌 "salls"와 일치합니다.
마지막으로, 대괄호는 범위를 지원하여 대량의 문자 집합을 효율적으로 정의합니다.
d[a-c]g
이 패턴은 "dag", "dbg", "dcg"와 일치합니다. 범위는 대소문자를 구분한다는 점에 유의하십시오. 예를 들어, [a-c]는 A, B, 또는 C와 일치하지 않습니다.
이러한 연산자들을 배우는 것은 Linux 명령줄 효율성을 배우는 가장 좋은 방법 중 하나입니다.