[Linux] 리눅스 grep 명령어

jiwon·2024년 12월 14일

리눅스에서 정말 많이 사용하는 명령어 중 하나가 바로 grep이다.
이 명령어로 파일에서 특정 문자열이나 패턴 등을 찾고자 할 때 유용하게 사용할 수 있다.

grep 옵션 '검색할 문자열' 파일명
grep 'error' system.log

이렇게 써주면 system.log파일에서 'error'라는 텍스트를 포함한 줄을 찾아서 보여준다.


📌 주요 옵션

1. -n

grep -n 'ERROR' logfile.txt

검색결과와 함께 줄 번호 표시

2. -i

grep -i 'hostname' config.txt

대소문자 무시.
'HOSTNAME', 'HostName'등 대소문자를 무시하여 모두 검색한다.

3. -v

grep -v 'DEBUG' logfile.txt

검색 결과 제외.
'DEBUG' 문자열이 포함되지 않은 모든 줄을 출력한다.

4. -C, -A, -B

grep -C 20 'ERROR' logfile.txt
grep -A 5 'ERROR' logfile.txt
grep -B 10 'ERROR' logfile.txt

-C : 검색된 줄 위 아래 n개 줄 출력
-A : 검색된 줄 아래로 n개 줄 출력
-B : 검색된 줄 위로 n개 줄 출력

5. -r

grep -r 'TODO' /project

/project 디렉토리 내의 모든 파일에서 'TODO'를 검색한다.

6. -w

grep -w 'user' config.txt

정확히 일치하는 단어만 검색하는 옵션.
'user'라는 단어만 검색. 'username'등은 포함되지 않는다.

7. --color

grep --color 'error' logfile.txt

검색된 문자열을 색상으로 강조 표시한다.



📌 정규표현식과 grep

grep은 정규표현식을 지원하므로 단순 문자열 뿐만 아니라 복잡한 패턴도 검색할 수 있다.

1. 숫자가 포함된 줄 검색

grep '[0-9]' data.txt

숫자를 포함한 모든 줄 검색

2. 여러 패턴 중 하나 검색

grep -E 'fatal|error|warning' logfile.txt

-E 옵션을 사용하여 'fatal', 'error', 'warning' 중 하나라도 포함된 줄 검색



📌 고급 활용 검색

1. 로그 파일에서 특정 시간대 검색

grep '2024-12-14 12:.*ERROR' logfile.txt

'2024-12-14 12:'로 시작하고 ERROR를 포함한 줄을 검색한다.

2. 특정 파일 확장자 검색

grep 'TODO' *.java

현재 디렉토리의 모든 .java파일에서 'TODO'를 검색한다.

3. 다중 파일 검색

grep 'ERROR' file1.log file2.log

두 개 이상의 파일에서 'ERROR'를 검색한다.

4. 결과를 다른 파일로 저장

grep 'ERROR' logfile.txt > errors.txt

결과를 errors.txt 파일에 저장한다.



grep 명령어는 평소에 많이 사용해왔지만 이렇게 다양한 옵션이 있는지 오늘 글을 작성하려고 찾아보면서 알았다.
이래서 블로그를 써야하나보다..

profile
내가 보려고 올리는 개발 일지

0개의 댓글