Linux

[리눅스] grep 명령어 완벽 가이드

인생아 2024. 9. 25. 14:54
반응형

grep은 파일이나 출력에서 특정 패턴(문자열)을 검색할 때 사용하는 명령어입니다. 주로 텍스트 파일에서 원하는 문자열을 찾거나, 다른 명령어의 출력에서 특정 패턴이 포함된 부분만 필터링할 때 매우 유용합니다. 정규 표현식을 지원하여 복잡한 검색도 가능하다는 점이 특징입니다.

grep 명령어의 기본 구문

grep [옵션] 패턴 [파일명]
  • 패턴: 검색할 문자열 또는 정규 표현식.
  • 파일명: 검색할 파일. 여러 파일을 지정할 수도 있습니다.

grep 명령어 옵션

  • -i: 대소문자를 구분하지 않고 검색합니다.
  • -r: 하위 디렉터리를 재귀적으로 검색합니다.
  • -v: 검색 패턴과 일치하지 않는 라인을 출력합니다.
  • -n: 검색 결과의 라인 번호를 함께 출력합니다.
  • -l: 패턴이 포함된 파일의 이름만 출력합니다.

grep 명령어 예제

1. 파일 내에서 특정 단어 검색

grep "hello" 파일.txt

이 명령어는 파일.txt에서 "hello"라는 단어가 포함된 라인을 검색합니다.

실행 예시:

user@linux:~/docs$ grep "hello" 파일.txt
hello world
hello there

2. 대소문자 구분 없이 검색

grep -i "hello" 파일.txt

이 명령어는 파일.txt에서 대소문자 구분 없이 "hello"라는 단어가 포함된 라인을 검색합니다.

실행 예시:

user@linux:~/docs$ grep -i "hello" 파일.txt
hello world
Hello Linux
HELLO users

3. 디렉터리 내 모든 파일에서 패턴 검색

grep -r "error" /var/log

이 명령어는 /var/log 디렉터리 및 하위 디렉터리 내의 모든 파일에서 "error"라는 단어를 검색합니다.

실행 예시:

user@linux:~$ grep -r "error" /var/log
/var/log/syslog:Sep 24 12:00:12 Error: Failed to start service
/var/log/dmesg:Error occurred during boot

4. 특정 패턴을 포함하지 않는 라인 검색

grep -v "success" 결과.txt

이 명령어는 결과.txt 파일에서 "success"라는 단어가 포함되지 않은 라인을 출력합니다.

실행 예시:

user@linux:~/projects$ grep -v "success" 결과.txt
Error: Unable to complete task
Warning: Task delayed

5. 검색 결과에 라인 번호 출력

grep -n "root" /etc/passwd

이 명령어는 /etc/passwd 파일에서 "root"라는 단어가 포함된 라인을 라인 번호와 함께 출력합니다.

실행 예시:

user@linux:~$ grep -n "root" /etc/passwd
1:root:x:0:0:root:/root:/bin/bash

6. 특정 패턴을 포함한 파일 목록 출력

grep -l "error" *.log

이 명령어는 현재 디렉터리의 .log 파일들 중 "error"라는 단어가 포함된 파일 이름만 출력합니다.

실행 예시:

user@linux:~/logs$ grep -l "error" *.log
syslog.log
boot.log

주의사항

  • grep 명령어는 결과가 많을 경우 less, more 등의 명령어와 함께 사용하여 페이지 단위로 출력할 수 있습니다.
  • 정규 표현식을 지원하므로 복잡한 패턴을 검색할 때 유용하지만, 올바른 정규식을 사용하지 않으면 원하는 결과가 나오지 않을 수 있습니다.

 

반응형