반응형
grep
은 텍스트 파일이나 명령 출력에서 특정 패턴을 검색할 때 사용하는 강력한 도구입니다. 주로 Unix/Linux 시스템에서 사용되며, 다양한 옵션과 정규식을 활용하여 원하는 텍스트를 효율적으로 찾을 수 있습니다.
1. 기본 문법
grep [옵션] "패턴" [파일명]
- 패턴: 찾고자 하는 문자열 또는 정규식.
- 파일명: 검색할 파일 이름. 파일명을 생략하면 표준 입력(stdin)에서 검색.
2. 자주 사용하는 옵션
옵션 | 설명 |
-i | 대소문자 구분 없이 검색. |
-v | 패턴에 일치하지 않는 라인을 출력. |
-n | 일치하는 라인의 라인 번호를 출력. |
-c | 일치하는 라인의 개수만 출력. |
-l | 패턴에 일치하는 파일 이름만 출력 (여러 파일 검색 시). |
-r 또는 -R | 하위 디렉터리까지 재귀적으로 검색. |
-w | 단어 단위로 패턴 검색 (예: foo는 foobar에 매칭되지 않음). |
-x | 패턴과 완전히 일치하는 라인만 출력. |
--color | 일치하는 부분을 색상으로 표시 (기본적으로 활성화). |
3. 예제
1) 간단한 텍스트 검색
grep "hello" file.txt
file.txt
에서 "hello"를 포함하는 라인을 출력.
2) 대소문자 구분 없이 검색
grep -i "error" file.txt
- "error", "Error", "ERROR" 등 대소문자 구분 없이 검색.
3) 라인 번호 출력
grep -n "TODO" file.txt
- "TODO"를 포함하는 라인의 번호와 내용을 출력.
4) 일치하지 않는 라인 출력
grep -v "test" file.txt
- "test"가 없는 라인만 출력.
5) 디렉터리 내 모든 파일 검색
grep -r "function" /path/to/directory
/path/to/directory
내 모든 파일에서 "function" 검색.
6) 정규식을 사용한 패턴 검색
grep "^[0-9]" file.txt
- 숫자로 시작하는 라인을 출력.
7) 파일 이름만 출력
grep -l "main" *.c
*.c
파일 중 "main"을 포함한 파일의 이름만 출력.
4. 정규식 활용
grep
은 기본적으로 기본 정규식(Basic Regular Expression, BRE)을 사용하며, -E
옵션을 사용하면 확장 정규식(Extended Regular Expression, ERE)을 사용할 수 있습니다.
정규식 예제
패턴 | 설명 |
^pattern | 라인의 시작에서 pattern 검색. |
pattern$ | 라인의 끝에서 pattern 검색. |
. | 임의의 한 문자와 매칭. |
[abc] | a, b, c 중 하나와 매칭. |
[a-z] | 소문자 알파벳 중 하나와 매칭. |
[0-9] | 숫자 중 하나와 매칭. |
pattern* | pattern이 0번 이상 반복된 경우. |
pattern+ | pattern이 1번 이상 반복된 경우 (-E 필요). |
pattern? | pattern이 0번 또는 1번 나타난 경우 (-E 필요). |
grep -E "file[0-9]+" file_list.txt
file_list.txt
에서 "file" 뒤에 숫자가 하나 이상 있는 문자열 검색.
5. 파이프와 함께 사용
grep
은 다른 명령어와 파이프(|
)를 조합하여 강력하게 활용할 수 있습니다.
ps aux | grep "nginx"
- 실행 중인 프로세스 중 "nginx"와 관련된 프로세스 검색.
dmesg | grep -i "error"
- 시스템 로그에서 "error" 관련 메시지 검색.
grep
은 단순한 텍스트 검색부터 복잡한 패턴 매칭까지 가능하며, 로그 분석, 파일 내용 검색 등 다양한 작업에 유용합니다. 필요에 따라 정규식과 옵션을 조합하면 효율적으로 사용할 수 있습니다.
반응형
'Linux Unix > Command' 카테고리의 다른 글
[ Linux ] gzip - 기본 압축 프로그램으로 압축 및 압축 풀기 (0) | 2024.12.27 |
---|---|
[ Linux ] hosts.allow, hosts.deny - IP, 서비스 차단하기 (0) | 2024.12.10 |
[ Linux ] hosts.allow, hosts.deny - 특정 서비스에서 특정 ip 접속 막기 (sshd) (0) | 2024.12.10 |
[ Linux ] top - CPU 사용량 확인하기 (0) | 2024.12.02 |
[ Linux ] rdp - GUI 방식으로 원격 컴퓨터에 접속하고 사용하기 (0) | 2024.12.02 |