티스토리 뷰
반응형
grep은 텍스트 내에서 특정 패턴을 검색하는 리눅스의 필수 명령어입니다. 특히 find와 함께 조합하면 시스템 전체에서 원하는 파일과 그 안의 내용을 한꺼번에 찾아낼 수 있는 강력한 도구가 됩니다.
1. grep 기본 사용법
grep의 기본 구조는 grep [옵션] [패턴] [파일명]입니다.
자주 사용하는 핵심 옵션
- -i: 대소문자를 구분하지 않음 (Ignore case)
- -v: 패턴과 일치하지 않는 줄만 출력 (Invert match)
- -r: 하위 디렉토리까지 포함하여 모든 파일 검색 (Recursive)
- -n: 검색 결과의 줄 번호를 함께 표시 (Line number)
- -w: 패턴이 전체 단어와 일치하는 경우만 검색 (Word)
- -E: 확장 정규 표현식 사용 (egrep과 동일)
기본 활용 예시
- grep "error" log.txt: log.txt에서 "error"가 포함된 모든 줄 출력
- grep -in "error" *.log: 현재 디렉토리의 모든 .log 파일에서 대소문자 구분 없이 "error"를 찾아 줄 번호와 함께 출력
2. find와 grep의 조합 활용 (핵심)
find는 파일 자체를 찾는 데 강점이 있고, grep은 파일 내용을 찾는 데 강점이 있습니다. 이 둘을 연결하면 "특정 조건의 파일을 찾아서 그 내부의 특정 문구까지 검색"하는 작업이 가능합니다.
① find ... -exec grep 방식
가장 표준적인 방법으로, find로 찾은 각 파일에 대해 grep 명령을 실행합니다.
Bash
find . -name "*.conf" -exec grep -H "port" {} \;
- 의미: 현재 폴더(.)에서 이름이 .conf로 끝나는 파일을 찾아, 그 안에 "port"라는 단어가 있는지 검색하고 파일명(-H)을 함께 출력합니다.
② find ... | xargs grep 방식 (성능 우수)
파일 개수가 많을 때 처리 속도가 더 빠릅니다.
Bash
find /etc -type f -name "*.txt" | xargs grep "password"
- 의미: /etc 디렉토리 내의 모든 .txt 파일들 중에서 "password"라는 단어가 포함된 파일을 찾습니다.
반응형
3. 실무에서 바로 쓰는 고급 활용법
특정 확장자 제외하고 검색하기
로그 파일이 너무 많아 .log 파일은 제외하고 검색하고 싶을 때 유용합니다.
Bash
grep -r "main" . --exclude=*.log
파이프(|)를 이용한 다중 필터링
특정 단어는 포함하되, 다른 단어는 제외하고 싶을 때 grep을 여러 번 연결합니다.
Bash
cat access.log | grep "GET" | grep -v "200"
- 의미: GET 방식 요청 중 응답 코드가 200이 아닌(에러 등) 로그만 골라냅니다.
검색 결과 전후 문맥 보기 (Context 제어)
에러 메시지 앞뒤의 상황을 파악해야 할 때 사용합니다.
- grep -A 3 "Error" log.txt: "Error" 발견된 줄 이후(After) 3줄까지 출력
- grep -B 3 "Error" log.txt: "Error" 발견된 줄 이전(Before) 3줄까지 출력
- grep -C 3 "Error" log.txt: "Error" 발견된 줄 전후(Context) 3줄씩 출력
4. 요약표: find vs grep
| 구분 | find | grep |
| 주요 목적 | 파일 시스템 내 파일 위치 찾기 | 파일 내 텍스트 내용 찾기 |
| 대상 | 파일명, 크기, 수정일, 권한 등 | 문자열, 정규표현식 패턴 |
| 비유 | "내 방 어딘가에 있는 '일기장' 찾기" | "일기장 내용 중 '사랑'이라는 단어 찾기" |
이 두 명령어를 조합하여 사용하는 법에 익숙해지면, 수만 개의 파일이 있는 서버 환경에서도 단 몇 초 만에 원하는 정보를 찾아낼 수 있습니다.
'SERVER' 카테고리의 다른 글
| Nginx 역방향 프록시 (0) | 2026.06.14 |
|---|---|
| AWS 웹 서버 구축 가이드 (0) | 2026.05.23 |
| 방화벽과 웹방화벽 차이 (0) | 2026.05.22 |
| linux vi(vim) 편집기 사용법 정리 (0) | 2026.05.05 |
| 리눅스 cd 명령어 사용법 정리 (0) | 2026.05.04 |
| 리눅스 ls 명령어 사용법 정리 (0) | 2026.05.04 |
| DNF 명령어 사용법 정리 (0) | 2026.05.03 |
| DNF 저장소 설정하기 (0) | 2026.05.03 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- c#
- 파이썬
- 상속
- C
- MySQL
- Class
- 리스트
- 데이터베이스
- 정보처리기사
- OpenCV
- 아두이노
- 벡터
- Android
- C++
- 안드로이드
- C언어
- DB연동
- 문제풀이
- 블루투스
- C++ 클래스
- 클래스
- html
- String
- 배열
- 문자열
- 자바
- 자료구조
- 알고리즘
- 파일처리
- Java
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
글 보관함
반응형
