grep은 하나 이상의 입력 파일에서 정규식과 일치하는 행을 검색하고 각 일치 행을 표준 출력에 쓰는 데 사용되는 강력한 명령줄 도구입니다.
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 명령을 사용하면 파일을 검색할 때 패턴과 디렉터리를 제외할 수 있습니다.
'SW > 리눅스' 카테고리의 다른 글
Linux : Ubuntu 20.04 : Plex Media Server 설치 방법, 예제, 명령어 (0) | 2023.01.27 |
---|---|
Linux : 503 Service Unavailable Error : 개념, 개요, 해결 방법 (0) | 2023.01.26 |
Linux : Ubuntu 20.04 : Gitea 설치 방법, 예제, 명령어 (1) | 2023.01.23 |
Linux : Ubuntu 20.04 : NFS Server 설치, 구성 방법, 예제, 명령어 (1) | 2023.01.22 |
Linux : Ubuntu 20.04 : VNC 설치, 구성 방법, 예제, 명령어 (0) | 2023.01.21 |