반응형
grep 이란?
grep 명령어는 텍스트 검색 기능을 제공하는 명령어로 유닉스 ed 텍스트 에디터의 명령어인 g/re/p에서 유래 되었다. ( g : global, r : regular expression, p : printprint)
grep 명령어를 사용하면 문자나 정규 표현식 등 제시한 표현 방식에 맞는 라인을 찾아 출력해준다.
grep 문법
grep [options] [pattern] [file]
grep 옵션 정리
short | long | 설명 |
-c | --count | 패턴과 일치하는 라인 수만 출력 |
-h | --no-filename | 일치하는 줄을 표시하지만 파일 이름은 미출력 |
-i | --ignore-case | 대소문자 구별없이 검색 |
-r(-R) | --recursive | 지정한 위치에서 하위 디렉토리까지 재귀 탐색 |
-w | --word-regexp | 단어와 일치하는 행만 출력 |
-x | --line-regexp | 라인과 일치하는 행만 출력 |
-v | --invert-match | 일치하지 않는 행만 출력 |
-n | --line-number | 라인 번호를 함께 출력 |
-m <number> | --max-count | 출력할 라인 수 지정 |
-E | --extended-regexp | 정규 표현식 패턴으로 검색 (egrep과 동일) |
-F | --fixed-string | 문자열 패턴으로 검색 (fgrep과 동일) |
-l | --files-with-matches | 파일 이름 목록만 표시 |
-f | -file | 파일에 기록된 내용을 패턴으로 사용 |
- grep에 대한 옵션이며, 자세한 옵션은 grep --help 또는 man grep 을 통해 자세한 설명을 확인할 수 있다.
grep 예제 - 문자열
// 대소문자를 구분하지 않고 file.t에서 sample 문자열 탐색
grep -i "sample" file.t
// 현재 디렉토리 하위를 재귀적으로 돌며 spring 단어가 포함된 파일별 라인 수 출력
grep -r -i -c "spring" ./*
// 여러 파일에서 spring 문자열 탐색
grep "spring" spring1.java spring2.java
- 문자열 탐색을 통해 특정 문자열 찾기, 하위 디렉토리 포함해서 찾기, 여러 파일 탐색하기 등이 가능하다.
grep 예제 - 정규표현식
// text.t 에서 sam으로 시작하는 라인 출력
grep "^sam" test.t
// text.t 에서 sam으로 시작하는 라인 갯수 출력
grep -c "^sam" test.t
// ple로 끝나는 모든 라인 출력
grep "ple$" test.t
// a ~ d 까지 한 단어라도 포함하면 출력
grep "[a-d]" test.t
// s, a, c, 3, 7 을 포함하지 않은 라인 출력
grep "[^sac37]" test.t
// f로 시작하는 파일 중에서 0개 이상의 공백을 갖고 숫자로 시작하는 모든 라인 출력
grep "*[0-9]" f*
grep 응용 - 파이프라인( | )
// jpa 문자열이 포함되고 mybatis 문자열을 제외한 정보 출력
ls -al | grep "jpa" | grep -v "mybatis"
// 실행중인 프로세스에서 대소문자를 구별하지 않고, system 문자열을 찾아서 test.t로 저장
ps -ef | grep -i "system" > test.t
// 실행 중인 프로세스 중 zsh 문자열이 포함된 프로세스의 2번째 텍스트인 pid를 꺼내서 일괄 종료
kill -15 $(ps -ef | grep "zsh" | awk '{print $2}')
// test.t 파일에서 test문자열이 포함된 전체 라인 수 출력
cat test.t | grep "test" | wc -l
- | 과 같은 파이프 라인을 이용하면 프로세스 종료, 파일 저장, 여러 조건 등의 다양한 명령어를 실행할 수 있다.
REFERENCE
반응형