Linux 정규식 튜토리얼: Grep Regex 예

⚡ 스마트 요약

리눅스 정규 표현식은 grep, sed, vi와 같은 도구에서 데이터를 검색하고 복잡한 패턴을 일치시키는 특수 문자 시퀀스로, 기본, 간격, 확장 및 중괄호 확장 형식을 사용하여 텍스트를 정확하게 필터링합니다.

  • 🔎 그들이 무엇인지: 정규 표현식(regexp 또는 regex로 줄여서 사용)은 검색 및 일치에 사용할 텍스트 패턴을 설명합니다.
  • 🧩 기본 세트: . ^ $ * 및 \와 같은 기호는 패턴에서 문자를 고정하고, 반복하고, 이스케이프하는 역할을 합니다.
  • 🔢 간격: 중괄호 {n}과 {n,m}은 앞의 문자가 몇 번 반복되는지를 제어합니다.
  • ➕ 펼친: grep -E에서 \+와 \?는 각각 문자가 한 번 이상 나타나는 경우와 한 번만 나타나는 경우를 일치시킵니다.
  • 🧵 교정기 확장: 중괄호는 시퀀스 또는 쉼표로 구분된 목록에서 여러 문자열을 생성합니다.
  • 🛠️ 사용처: grep, sed, tr, vi 등의 도구는 정규 표현식을 사용하여 텍스트를 필터링합니다.
  • 🤖 AI 도움말: AI 비서와 GitHub Copilot은 정규 표현식 패턴을 신속하게 생성, 설명 및 디버깅할 수 있습니다.

grep을 사용한 Linux 정규 표현식 - 기본, 간격 및 확장 정규 표현식 예제

정규 표현식은 가장 강력한 기능 중 하나입니다. Linux grep은 간결한 패턴을 사용하여 데이터를 일치, 필터링 및 변환할 수 있는 텍스트 도구입니다. 이 페이지에서는 기본, 간격 및 확장 형식과 중괄호 확장에 대해 설명하고 grep 예제를 통해 이를 보여줍니다.

Linux 정규식이란 무엇입니까?

리눅스 정규 표현식은 데이터를 검색하고 복잡한 패턴을 일치시키는 데 도움이 되는 특수 문자입니다. 정규 표현식은 'regexp' 또는 'regex'로 줄여서 부릅니다. 많은 리눅스 프로그램에서 사용됩니다. GREPbash, rename, sed 등 다양한 명령어가 있습니다.

정규식의 유형

이해를 돕기 위해 다양한 유형의 정규 표현식을 하나씩 살펴보겠습니다. 이 페이지에서는 기본 정규 표현식, 구간 정규 표현식, 확장 정규 표현식을 다루고 중괄호 확장으로 마무리합니다.

기본 정규식

정규 표현식과 함께 자주 사용되는 명령어로는 tr, sed 등이 있습니다. vigrep도 사용할 수 있습니다. 아래 표는 몇 가지 기본적인 정규 표현식을 나열합니다.

상징 기술설명
. 모든 문자를 대체합니다
^ 문자열의 시작 부분과 일치합니다.
$ 문자열의 끝과 일치합니다.
* 앞 문자와 0회 이상 일치합니다.
\ 특수 문자를 나타냅니다.
() 그룹 정규식
? 문자 하나가 정확히 일치합니다.

예를 들어 보겠습니다. 먼저 아래와 같이 `cat sample` 명령어를 실행하여 기존 파일의 내용을 표시합니다.

`cat` 명령어는 터미널에 기존 파일의 내용을 표시하는 예시입니다.

다음으로, 'a'라는 문자가 포함된 내용을 검색합니다. 아래 스크린샷은 grep 명령어가 'a'가 포함된 모든 줄을 반환하는 결과를 보여줍니다.

grep 명령어를 사용하여 샘플 파일에서 문자 'a'가 포함된 줄을 검색합니다.

캐럿 기호 '^'는 문자열의 시작 부분을 나타냅니다. 아래 예시는 'a'로 시작하는 콘텐츠를 검색합니다.

캐럿(^) 앵커를 사용하여 'a'로 시작하는 줄만 검색합니다.

'a'로 시작하는 줄만 필터링됩니다. 'a'로 시작하지 않는 줄은 무시됩니다.

다른 예를 살펴보겠습니다. 아래 스크린샷은 줄 끝을 기준으로 필터링하기 전의 샘플 파일 내용을 다시 보여줍니다.

t로 끝나는 줄을 필터링하기 전의 샘플 파일 내용입니다.

아래 그림과 같이 '$' 앵커를 사용하여 't'로 끝나는 줄만 선택하십시오.

달러 기호($)를 사용하여 grep 명령으로 문자 't'로 끝나는 줄만 선택합니다.

간격 정규식

이 표현식들은 문자열에서 특정 문자가 나타나는 횟수를 지정합니다. 아래에 나열되어 있습니다.

표현 기술설명
{NS} 'n'번 나타나는 앞의 문자와 정확히 일치합니다.
{n,m} 'n'번 나타나는 앞의 문자와 일치하지만 m보다 크지는 않습니다.
{N, } 앞의 문자가 'n'회 이상 나타나는 경우에만 일치합니다.

예를 들어, 'p' 문자가 포함된 모든 줄을 필터링합니다. 아래 스크린샷은 일치하는 줄을 보여줍니다.

grep을 사용하여 샘플 파일에서 문자 'p'가 포함된 줄을 필터링합니다.

이제 문자열에서 문자 'p'가 정확히 두 번, 연속해서 나타나는지 확인하십시오. 구문은 다음과 같습니다.

cat sample | grep -E p\{2}

인터벌 매치 결과는 아래와 같습니다.

grep -E 문자 p가 정확히 두 번 나타나는 간격 표현식

참고: 이러한 정규식에는 -E를 추가해야 합니다.

확장 정규식

이러한 정규 표현식은 둘 이상의 표현식을 결합합니다. 몇 가지 예는 다음과 같습니다.

표현 기술설명
\+ 이전 문자의 하나 이상의 발생과 일치합니다.
\? 이전 문자의 XNUMX개 또는 XNUMX개 항목과 일치합니다.

예를 들어, 문자 't'가 모두 나타나는 부분을 검색해 보세요. 아래 스크린샷은 그 결과를 보여줍니다.

grep 명령어를 사용하여 샘플 파일에서 문자 't'를 포함하는 모든 줄을 검색합니다.

문자 'a'가 문자 't' 앞에 오는 줄을 필터링하고 싶다고 가정해 보겠습니다. 다음과 같은 명령어를 사용할 수 있습니다.

cat sample|grep "a\+t"

출력 결과는 다음 스크린샷에 나와 있습니다.

grep 확장 표현식은 하나 이상의 'a' 문자 뒤에 't'가 오는 것을 일치시킵니다.

버팀대 확장

중괄호 확장 구문은 중괄호 '{}' 안에 항목들의 순서 또는 쉼표로 구분된 목록입니다. 순서의 시작 항목과 끝 항목은 마침표 '..'로 구분됩니다.

아래에 몇 가지 예시가 나와 있습니다.

중괄호 확장을 사용하여 시퀀스와 리스트로부터 여러 문자열을 생성하는 echo 명령

위 예시에서 echo 명령어는 중괄호 확장을 사용하여 문자열을 생성하며, 하나의 패턴에서 여러 개의 문자열을 생성합니다.

자주 묻는 질문

grep은 기본적으로 기본 정규 표현식을 사용합니다. egrep은 확장 표현식을 사용할 수 있도록 하며(grep -E와 동일), fgrep은 정규 표현식 없이 고정된 문자열을 일치시킵니다(grep -F). 최신 GNU grep에서는 egrep과 fgrep을 더 이상 사용하지 않는 것으로 표시하고 있으므로 grep -E와 grep -F를 사용하는 것이 좋습니다.

문자 클래스는 문자 범주와 일치합니다. [az]와 같은 대괄호 표현식은 문자 범위를 일치시키고, [[:alpha:]], [[:digit:]], [[:space:]]와 같은 POSIX 클래스는 문자, 숫자 및 공백과 일치시킵니다. 이러한 클래스를 사용하면 패턴을 읽기 쉽고 다양한 로케일에서 이식성이 유지됩니다.

예를 들어 `grep -i “hello” sample`처럼 `-i` 옵션을 추가하세요. 이렇게 하면 Hello, HELLO, hello가 모두 일치합니다. `-i` 옵션이 없으면 정규 표현식은 대소문자를 구분하므로 대문자와 소문자는 서로 다른 문자로 처리됩니다.

셸 와일드카드(글로빙)는 파일 이름을 확장하며, *는 모든 문자를, ?는 한 문자를 의미합니다. 정규 표현식은 파일 내부의 텍스트와 일치하며, *는 앞의 문자가 0개 이상 반복됨을 의미합니다. 동일한 기호라도 각 상황에서 다른 의미를 가질 수 있습니다.

예를 들어 `grep -o “a\+t” sample`과 같이 `-o` 옵션을 사용하세요. grep은 전체 줄을 출력하는 대신 패턴과 일치하는 부분만 한 줄에 하나씩 출력합니다. 이는 예를 들어 다음과 같은 경우에 유용합니다.trac이메일이나 숫자와 같은 값을 저장합니다.

파이프 기호(|)를 사용하여 패턴을 번갈아 검색할 수 있습니다. 확장 모드에서 `grep -E “cat|dog” sample`은 `cat` 또는 `dog`이 포함된 줄을 찾습니다. 기본 모드에서는 `grep “cat\|dog” sample`과 같이 이스케이프해야 합니다. 패턴을 번갈아 검색하면 하나의 명령으로 여러 패턴을 동시에 검색할 수 있습니다.

AI 비서는 평범한 영어 설명을 작동하는 정규 표현식으로 변환하고, 모호한 패턴의 기능을 설명하며, 일치하는 항목을 찾지 못했을 때 수정 방법을 제안할 수 있습니다. 또한 머신러닝 도구는 수작업으로 작성하기에는 매우 번거로운 대규모 로그 파일에서 반복되는 패턴을 감지할 수 있습니다.

예. GitHub 부조종사 입력하는 동안 주석이나 부분 패턴에서 grep 명령과 정규 표현식을 직접 제안합니다. 복잡한 표현식을 빠르게 작성할 수 있도록 도와주지만, 생성된 패턴을 실제 샘플 데이터에 적용하여 테스트한 후에 사용하는 것이 좋습니다.

이 게시물을 요약하면 다음과 같습니다.