리눅스/리눅스 기초

[리눅스 명령어] 문자열이나 패턴 검색, grep

Linuxpia 2024. 12. 9. 16:50
반응형

리눅스 명령어 grep

grep 명령어는 텍스트 파일에서 특정 문자열이나 패턴을 검색할 때 사용하는 강력한 명령어입니다. 검색 결과를 출력하거나, 조건에 맞는 데이터를 추출하는 데 유용합니다.


기본 사용법

grep [옵션] "검색어" [파일]
  • 검색어: 찾고자 하는 문자열이나 패턴.
  • 파일: 검색 대상이 되는 텍스트 파일.
  • 옵션: 검색 결과를 조정하거나 추가 기능을 활성화.

주요 기능

  1. 문자열 검색: 파일에서 특정 단어나 문장을 검색.
  2. 패턴 매칭: 정규 표현식(Regular Expression)을 사용하여 복잡한 패턴 검색.
  3. 하위 디렉터리 재귀 검색: 특정 디렉터리 아래 모든 파일에서 검색.

주요 옵션

옵션 설명 사용 예제
-i 대소문자를 구분하지 않고 검색 grep -i "hello" file.txt
-n 검색된 줄 번호를 함께 출력 grep -n "error" logfile.txt
-v 검색어가 포함되지 않은 줄만 출력 grep -v "success" logfile.txt
-r 하위 디렉터리를 포함해 모든 파일에서 검색 grep -r "config" /etc
-l 검색어가 포함된 파일 이름만 출력 grep -l "main" *.c
-c 검색어가 매칭된 줄의 개수만 출력 grep -c "function" file.txt
--color 검색어를 하이라이트(색상 강조)하여 출력 grep --color "pattern" file.txt
-w 정확히 단어로 매칭 grep -w "test" file.txt
-A [숫자] 매칭된 줄 이후의 [숫자] 줄 출력 grep -A 3 "error" logfile.txt
-B [숫자] 매칭된 줄 이전의 [숫자] 줄 출력 grep -B 2 "error" logfile.txt
-C [숫자] 매칭된 줄 이전과 이후의 [숫자] 줄 출력 grep -C 2 "error" logfile.txt

상세 사용 예제

1. 특정 단어 검색

file.txt에서 "error"라는 단어를 검색:

grep "error" file.txt

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

"Hello"와 "hello"를 동일하게 인식하여 검색:

grep -i "hello" file.txt

3. 줄 번호와 함께 출력

검색 결과의 줄 번호를 표시:

grep -n "error" logfile.txt

출력 예:

12:error occurred in the system
27:error not found

4. 검색 결과 제외

"success"가 포함되지 않은 줄을 출력:

grep -v "success" logfile.txt

5. 하위 디렉터리 포함 검색

/etc 디렉터리 아래 모든 파일에서 "config"를 검색:

grep -r "config" /etc

6. 검색된 파일 이름만 출력

현재 디렉터리의 C 파일 중 "main"이 포함된 파일 이름만 출력:

grep -l "main" *.c

7. 단어 단위 검색

"test"라는 단어가 정확히 포함된 줄만 출력 (예: "testing"은 제외):

grep -w "test" file.txt

정규 표현식 사용

grep정규 표현식(Regular Expression)을 지원하여 복잡한 패턴 검색이 가능합니다.

1. 특정 문자열로 시작하는 줄 검색

"error"로 시작하는 줄:

grep "^error" file.txt

2. 특정 문자열로 끝나는 줄 검색

"error"로 끝나는 줄:

grep "error$" file.txt

3. 숫자를 포함하는 줄 검색

grep "[0-9]" file.txt

4. 특정 문자 반복 패턴 검색

"a"가 세 번 연속으로 나타나는 패턴:

grep "a\{3\}" file.txt

검색 결과 강조 (하이라이트)

--color 옵션을 사용하여 검색된 패턴을 색상으로 강조할 수 있습니다.

grep --color "error" file.txt

color 옵션 사용 사례


정리

  • grep은 텍스트 검색의 필수 도구로, 문자열, 패턴 매칭, 정규 표현식을 지원합니다.
  • 주요 옵션으로 대소문자 무시(-i), 줄 번호 표시(-n), 제외 검색(-v), 하위 디렉터리 검색(-r) 등이 있습니다.
  • 정규 표현식을 활용하면 더욱 강력한 패턴 매칭이 가능합니다.
  • 대규모 로그 분석, 디버깅, 파일 내용 확인 등 다양한 작업에 매우 유용합니다.