라즈베리파이(Raspberrypi)

[Linux]리눅스 grep 정규식으로 검색하기(|, regex, search)

끄적끄적아무거나 2022. 7. 26. 09:23
반응형

목차

     

     

     

    [Linux]리눅스 grep 검색이란?

    리눅스에서 grep을 사용해서 쉽게 검색을 할 수 있습니다. grep은 정규 표현식(Regular expression)을 사용하기 때문에 간단한 정규 표현식을 사용한다면 검색이 용이 합니다. 

     

    이번 시간에 grep의 옵션 및 기본 정규 표현식 사용 방법 및 간단한 예제 실습을 진행해 보겠습니다.

     

     

    우선 grep의 사용방법은 아래와 같습니다.

     

    grep 옵션 '정규표현식' 파일명

     

    옵션은 아래와 같습니다.

     

    • -i : 대소문자 구분 없이 검색
    • -n : 일치하는 줄과 그 줄 번호를 같이 보여줌

     

     

     

     

    정규 표현식 기본 표현

     

    아래는 정규 표현식 사용의 기본 표현을 정리한 내용입니다.

     

     

    • * : 별표 앞의 문자가 0개 이상 존재
    • . : 하나의 문자
    • ^ : 시작하는 문자와 대응
    • $ : 끝 문자와 대응
    • [] : 괄호안 범위에 대응

     

    아래 예제를 통해 쉽게 알아보겠습니다.

     

     

     

     

     

     

    grep 예제 실습(별표, 점, 꺽쇠, |)

     

    예제에 사용할 텍스트 파일은 아래와 같습니다.

     

     

    예제 코드1 : .(점, 닷트) 사용>>

    fam@raspberrypi:~/linux_test $ grep 'e..o' test02.txt 
    Hello World!!!
    fam@raspberrypi:~/linux_test $ grep -n 'e..o' test02.txt 
    1:Hello World!!!
    fam@raspberrypi:~/linux_test $

    위와 같이 .을 사용해서 일치하는 구문을 찾아 몇번째 줄에 있는지 까지 표기 하였습니다.

     

     

     

     

    예제 코드2 *(별표) 사용>>

    fam@raspberrypi:~/linux_test $ grep 'n*a' test02.txt 
    my name
    my class
    fam@raspberrypi:~/linux_test $

    위 명령은 n 문자가 적어도 0개 이상 존재하면서 다음에 a가 나오는 경우 입니다.

     

     

     

     

    예제 코드3 ^(꺽쇠) 사용>>

    fam@raspberrypi:~/linux_test $ grep '^ye' test02.txt 
    fam@raspberrypi:~/linux_test $ grep '^my' test02.txt 
    my name
    my class

    ye로 시작하는 문장은 없어서 결과가 출력되지 않고 my로 시작하는 문장은 아래와 같이 나왔습니다.

     

     

     

     

     

    예제 코드4 [](괄호), | 사용, AND 검색>>

    fam@raspberrypi:~/linux_test $ cat test02.txt | grep 'H[a-z]'
    Hello World!!!
    fam@raspberrypi:~/linux_test $ cat test02.txt | grep '^my' | grep 'c*s' 
    my class

    1번 라인: | 기호를 사용해서 파일을 검색합니다

    3번 라인: and 방식으로 검색하고 싶을 경우 | 를 계속 추가해서 검색하시면 됩니다.

     

     

     

     

     

    예제 코드5 OR 검색>>

    fam@raspberrypi:~/linux_test $ cat test02.txt | grep -e '^my' -e 'c*s' 
    my name
    my class

    1번 라인: 검색할 패턴(pattern) 앞에 소문자 e를 붙이면 or로 검색 됩니다.

    반응형