본문 바로가기
Environment/Linux

[Linux] grep

by VIR&US 2025. 4. 9.
반응형

목차

     

    grep의 종류

    • grep은 3가지 종류가 있습니다.
    • egrp은 정규표현식만으로 검색하는 것이고,
    • fgrep은 문자열로 검색하는 grep을 말하며 각각 grep의 -E, -F 옵션을 사용했을 때와 결과는 같습니다.
    명령어
    설명
    정규표현식 사용
    grep
    다중 패턴을 검색합니다.
    O
    egrep
    정규 표현식 패턴으로 검색합니다.
    O
    fgrep
    문자열 패턴으로 검색합니다.
    X

    grep 옵션

    • -c : 일치하는 행의 수를 출력합니다.
    • -i : 대소문자를 구별하지 않습니다.
    • -v : 일치하지 않는 행만 출력합니다.
    • -n : 포함된 행의 번호를 함께 출력합니다.
    • -l : 패턴이 포함된 파일의 이름을 출력합니다.
    • -w : 단어와 일치하는 행만 출력합니다.
    • -x : 라인과 일치하는 행만 출력합니다.
    • -r : 하위 디렉토리를 포함한 모든 파일에서 검색합니다.
    • -m 숫자 : 최대로 표시될 수 있는 결과를 제한합니다.
    • -E : 찾을 패턴을 정규 표현식으로 찾습니다.
    • -F : 찾을 패턴을 문자열로 찾습니다.

    문자열로 찾기

    # 특정 파일에서 'error' 문자열 찾기
    grep 'error' 파일명
    
    # 여러개의 파일에서 'error' 문자열 찾기
    grep 'error' 파일명1 파일명2
    
    # 현재 디렉토리내에 있는 모든 파일에서 'error' 문자열 찾기
    grep 'error' *
    
    # 특정 확장자를 가진 모든 파일에서 'error' 문자열 찾기
    grep 'error' *.log

    정규표현식으로 찾기

    # 특정 파일에서 문자열이 포함된 행을 찾는다.
    grep '^[ab]' 파일명 
    
    # 특정 파일에서 a로 시작하는 모든 단어를 찾는다.
    grep 'a*' 파일명 
    
    # 특정 파일에서 a로 시작하고 z로 끝나는 5자리 단어를 찾는다.
    grep 'a...z' 파일명 
    
    # 특정 파일에서 a,b,c로 시작하는 단어를 모두 찾는다.
    grep [a-c] 파일명
    
    # 특정 파일에서 apple 또는 Apple로 시작하는 단어를 모두 찾는다.
    grep [aA]pple 파일명 
    
    # 특정 파일에서 a나 b로 시작되는 모든 행을 찾는다.
    grep '^[ab]' 파일명 
    
    # 특정 파일에서 apple로 시작되고 0나 9의 숫자로 끝나로 시작되는 모든 행을 찾는다.
    grep 'apple'[0-9] 파일명

    Example

    grep은 다른 명령어와 조합해서 사용하는 경우도 많습니다.

    실시간 로그 보기 (tail + grep)

    tail -f mylog.log | grep 111.111.11.11

    mylog파일을 실시간으로 액세스하고 IP주소가 111.111.11.11인 행만 추출할 수 있습니다.

    특정 파일에서 여러개 문자열 찾기

    cat mylog.txt | grep 'Apple' | grep 'Banana'

    '|' 를 사용하면 grep명령어를 여러 개 사용하여 특정 파일에서 여러 개의 문자열을 찾을 수 있습니다.

    위의 명령어대로 입력한다면 mylog.txt 파일에서 Apple과 Banana이 있는 문자열들을 찾을 수 있습니다.

    grep 한 결과 값 txt 파일로 저장하기

    grep -n 'Apple' mylog.txt > result.txt

    mylog.txt 파일에서 Apple이 있는 문자열들을 result.txt 파일에 저장할 수 있습니다.

    grep "특정 확장자, 디렉토리" 에서 실행과 제외

    grep [특정 확장자의 파일만 검색]

    grep -ri --include='*.txt' "Hello" /misc/project

    위 명령어는 '/misc/project' 디렉토리부터 하위 디렉토리 전부를 Hello 키워드가 있는 모든 txt파일을 검색 합니다.

    grep [특정 확장자를 제외하고 검색]

    grep -ri --exclude='*.xml' "Hello" /misc/project

    위 명령어는 '/misc/project' 디렉토리부터 하위 디렉토리 전부를 Hello 키워드가 있는 모든 xml파일을 제외하고 검색합니다.

    grep [특정 디렉토리를 제외하고 검색]

    grep -ri --exclude-dir='Video' "Hello" ./

    위 명령어는 현재 디렉토리부터 하위 디렉토리 전부를 Video로 된 디렉토리를 제외하여 Hello 키워드가 들어간 파일을 검색합니다.

    grep -ri "Hello" ./ --exclude-dir={Video,Doc}

    제외 디렉토리를 복수 지정 하는 방법 (Video 디렉토리와 Doc 디렉토리 제외)

    grep [검색한 내용 저장할 파일 지정]

    grep -ri --exclude-dir='Video' "Hello" ./ > G1.log

    grep 명령어의 가장 뒤에 ' > 파일명'

    화면 출력을 하지 않고 grep 한 내용을 'G1.log'에 저장(파일생성)

    grep이후 다수 파일에서 문자열 치환

    grep -rl "특정문자" *|xargs sed -i 's/특정문자/바꿀문자/g'
    
    Example:
    grep -rl "app" /bin/user.pl |xargs sed -i 's/app/abb/g'

    /bin/user.pl에서 app >> abb 로 치환

    728x90
    반응형