And Brain said,
grep, linux command 옵션 총정리 본문
반응형
제가 쓰려고 정리해놓은거라 설명이 부족한 점 양해바랍니다.
1. 기본 사용법
grep [옵션] "검색할_패턴" 파일명
grep "error" log.txt
👉 log.txt에서 "error"라는 단어가 포함된 줄을 출력
2. grep의 모든 옵션과 사용법
1) 출력 형식 관련 옵션
-n | 검색 결과와 함께 줄 번호 출력 | grep -n "error" log.txt |
-c | 일치하는 줄 개수만 출력 | grep -c "error" log.txt |
-o | 일치하는 문자열만 출력 | grep -o "ERROR-[0-9]*" log.txt |
-q | 결과를 출력하지 않고 종료 코드만 반환 (0: 일치, 1: 불일치) | grep -q "error" log.txt && echo "Found!" |
-s | 파일이 없거나 읽을 수 없을 때 오류 메시지를 출력하지 않음 | grep -s "error" missing_file.txt |
-l | 일치하는 파일 이름만 출력 | grep -l "error" *.log |
-L | 일치하지 않는 파일 이름만 출력 | grep -L "error" *.log |
-H | 검색된 줄 앞에 항상 파일명 출력 (파일이 하나여도 출력) | grep -H "error" log.txt |
-h | 여러 파일을 검색할 때 파일명을 출력하지 않음 | grep -h "error" *.log |
--color=auto | 검색된 패턴을 색상으로 강조하여 출력 | grep --color=auto "error" log.txt |
2) 검색 방식 관련 옵션
-i | 대소문자 구분 없이 검색 | grep -i "error" log.txt |
-w | 단어 단위로 검색 (is를 찾지만 this는 제외) | grep -w "is" file.txt |
-x | 줄 전체가 패턴과 일치하는 경우만 출력 | grep -x "Hello World" file.txt |
-v | 일치하지 않는 줄 출력 (부정 검색) | grep -v "DEBUG" log.txt |
3) 정규 표현식 관련 옵션
-E | 확장 정규 표현식(ERE) 사용 (egrep과 동일) | grep -E "error|warning|fail" log.txt |
-F | 정규 표현식을 해석하지 않고 문자열 그대로 검색 (fgrep과 동일) | grep -F "error.*warning" log.txt |
-P | Perl 정규 표현식(PCRE) 사용 (고급 정규 표현식 지원) | grep -P "\d{4}-\d{2}-\d{2}" file.txt |
4) 파일 및 디렉토리 검색 관련 옵션
-r | 하위 디렉토리까지 재귀적으로 검색 | grep -r "TODO" ./src |
-R | 심볼릭 링크도 따라가며 재귀 검색 | grep -R "TODO" ./src |
--exclude=PATTERN | 특정 패턴의 파일 제외 | grep -r --exclude="*.log" "error" ./logs |
--exclude-dir=DIR | 특정 디렉토리 제외 | grep -r --exclude-dir="node_modules" "TODO" . |
--include=PATTERN | 특정 패턴의 파일만 검색 | grep -r --include="*.py" "import" . |
5) 성능 최적화 관련 옵션
-Z | 출력에서 개행을 제거하고 널 문자(\0)로 구분 | grep -Z "error" log.txt |
--line-buffered | 실시간으로 줄 단위 버퍼링하여 출력 (느려질 수 있음) | grep --line-buffered "error" log.txt |
-A N | 검색된 줄 이후 N줄 추가 출력 (After context) | grep -A 3 "error" log.txt |
-B N | 검색된 줄 이전 N줄 추가 출력 (Before context) | grep -B 3 "error" log.txt |
-C N | 검색된 줄 앞뒤 N줄 추가 출력 (Context) | grep -C 3 "error" log.txt |
-b | 검색된 패턴의 바이트 오프셋 출력 | grep -b "error" log.txt |
3. grep 활용 예제
1) 특정 디렉토리에서 파일 검색
grep -r "function" /path/to/code
👉 /path/to/code 폴더 내 모든 파일에서 "function"이 포함된 줄 출력
2) 특정 확장자의 파일에서 검색
grep -r --include="*.py" "import" .
👉 현재 폴더에서 .py 파일만 검색하여 "import" 찾기
3) 여러 개의 키워드 중 하나라도 포함된 줄 검색
grep -E "error|fail|warning" log.txt
👉 "error", "fail", "warning" 중 하나라도 포함된 줄 출력
4) 특정 패턴을 포함하지 않는 줄 검색
grep -v "DEBUG" log.txt
👉 "DEBUG"가 없는 줄만 출력
5) 대소문자 구분 없이 검색
grep -i "login" auth.log
👉 "login", "LOGIN", "LogIn" 등 대소문자 구분 없이 검색
6) 검색된 단어만 출력
grep -o "ERROR-[0-9]*" log.txt
👉 "ERROR-12345" 같은 패턴만 출력
7) 검색 결과에 줄 번호 표시
grep -n "password" config.txt
👉 "password"가 포함된 줄 번호 출력
8) 검색된 줄 앞뒤 문맥 표시
grep -C 3 "error" log.txt
👉 "error"가 있는 줄을 중심으로 앞뒤 3줄씩 출력
반응형
'IT' 카테고리의 다른 글
정규표현식(Regular Expression), 데이터를 걸러내는 디지털 어망 (0) | 2025.02.05 |
---|
Comments