SW/리눅스

Linux : Grep : 조회, 제외 방법, 예제, 명령어

얇은생각 2023. 1. 25. 07:30
반응형

grep은 하나 이상의 입력 파일에서 정규식과 일치하는 행을 검색하고 각 일치 행을 표준 출력에 쓰는 데 사용되는 강력한 명령줄 도구입니다.

grep으로 검색할 때 하나 이상의 단어, 패턴 또는 디렉토리를 제외하는 방법을 보여 줍니다.

 

 

Linux : Grep : 조회, 제외 방법, 예제, 명령어

 

 

단어와 패턴을 제외

검색 패턴과 일치하지 않는 행만 표시하려면 -v(또는 --invert-match) 옵션을 사용합니다.

예를 들어 nogin 문자열이 포함되지 않은 라인을 인쇄하려면 다음을 사용합니다.

grep -wv nologin /etc/passwd

# root:x:0:0:root:/root:/bin/bash
# git:x:994:994:git daemon user:/:/usr/bin/git-shell
# jjeongil:x:1000:1000:jjeongil:/home/jjeongil:/bin/bash

 

 

-w 옵션은 grep에 지정된 문자열이 전체 단어(비단어 문자로 둘러싸임)인 행만 반환하도록 지시합니다.

기본적으로 grep은 대소문자를 구분합니다. 즉, 대소문자는 구별되는 문자로 처리됩니다. 검색할 때 대/소문자를 무시하려면 -i 옵션을 사용하여 grep을 호출합니다.

검색 문자열에 공백이 포함된 경우 단일 또는 이중 따옴표로 묶어야 합니다.

둘 이상의 검색 패턴을 지정하려면 -e 옵션을 사용합니다.

grep -wv -e nologin -e bash /etc/passwd

 

 

-e 옵션은 필요한 만큼 사용할 수 있습니다.

여러 검색 패턴을 제외하는 또 다른 옵션은 OR 연산자 |을 사용하여 패턴을 결합하는 것입니다.

다음 예제에서는 nologin 또는 bash 문자열이 포함되지 않은 행을 인쇄합니다.

grep -wv 'nologin\|bash' /etc/passwd

 

 

GNU grep은 기본, 확장 및 Perl 호환의 세 가지 정규식 구문을 지원합니다. 기본적으로 grep은 패턴을 |과 같은 메타 문자들이 특별한 의미를 상실하는 기본 정규식으로 해석하며 사용자는 백슬래시 버전을 사용해야 합니다.

확장 정규식 옵션 -E를 사용하는 경우 연산자 |을 이스케이프하면 안 됩니다.

grep -Ewv 'nologin|bash' /etc/passwd

 

 

리터럴 문자열 또는 식 집합일 수 있는 서로 다른 일치 항목을 지정할 수 있습니다. 다음 예제에서는 줄의 맨 처음에 문자열 게임이 발생하는 줄은 제외됩니다.

grep -v "^games" file.txt

 

 

명령의 출력은 grep through piping으로 필터링할 수 있으며, 주어진 패턴과 일치하는 선만 터미널에 인쇄됩니다.

예를 들어 사용자 "root"로 실행되는 프로세스를 제외한 시스템에서 실행 중인 모든 프로세스를 인쇄하려면 ps 명령의 출력을 필터링할 수 있습니다.

ps -ef | grep -wv root

 

 

 

디렉터리 및 파일을 제외

때때로 -r 또는 -R 옵션으로 재귀 검색을 수행할 때 검색 결과에서 특정 디렉터리를 제외할 수 있습니다.

-r 또는 -R 옵션의 주요 차이점은 grep이 대문자 R로 호출될 때 모든 심볼 링크를 따라간다는 것입니다.

검색에서 디렉토리를 제외하려면 --exclude-dir 옵션을 사용합니다. 제외된 디렉터리의 경로는 검색 디렉터리에 상대적입니다.

다음은 /etc/pki 디렉토리를 제외한 /etc 내부의 모든 파일에서 jjeongil 문자열을 검색하는 방법을 보여 주는 예입니다.

grep -R --exclude-dir=pki jjeongil /etc

 

 

여러 디렉터리를 제외하려면 제외된 디렉터리를 대괄호로 묶고 공백 없이 쉼표로 구분하십시오.

예를 들어 Linux 시스템에서 proc, boot 및 sys 디렉터리를 제외한 문자열 'gnu'가 포함된 파일을 찾으려면 다음을 실행합니다.

grep -r --exclude-dir={proc,boot,sys} gnu /

 

 

와일드카드 일치를 사용할 때 기본 이름이 --exclude 옵션에 지정된 GLOB와 일치하는 파일을 제외할 수 있습니다.

아래 예에서는 .png 및 .jpg 디렉토리로 끝나는 파일을 제외하고 현재 작업 디렉토리의 모든 파일에서 jjeongil 문자열을 검색합니다.

grep -rl --exclude=*.{png,jpg} jjeongil *

 

 

grep 명령을 사용하면 파일을 검색할 때 패턴과 디렉터리를 제외할 수 있습니다.

반응형