grep

grep은 주어진 입력 파일에서 패턴이 일치하는 라인을 찾아주는 유틸리티다.
패턴 중 하나 이상과 일치하는 라인은 표준 출력으로 기록된다.

파일이 지정되지 않으면 표준 입력에서 데이터를 읽는다.

종료 코드

코드 상황
0 1개 이상의 라인이 선택됨
1 아무 라인도 선택되지 않음
2 에러 발생

옵션

정규 표현식

-e, Regex

정규 표현식 패턴을 찾는다.

$ cat bbb
A
AA
AAA
AAAA
AAAAA
$ grep -e "[A]\{3\}" bbb
AAA
AAAA
AAAAA

여러 번 사용해도 된다.

$ grep -e "pattern1" -e "pattern2" file
-E, Extended Regex

확장된 정규 표현식을 사용한다.
확장된 정규 표현식을 사용하면 메타 문자(+, -, ?, !, ...)를 escape(\)없이 사용할 수 있다.

$ cat bbb
A
AA
AAA
AAAA
AAAAA
$ grep -E "[A]{3}" bbb
AAA
AAAA
AAAAA

-R 하위 디렉토리를 재귀적으로 검색

-r, --recursive

$ grep -R 'aaa' .
./hello:aaaaaaaaaaaa

특정 파일 제외하기

--exclude, 파일 제외
$ grep "pattern" --exclude="*.md" path
--exclude-dir, 디렉터리 제외

-R 옵션을 사용할 때 특정 디렉터리를 제외한다.

$ grep --exclude-dir="subpath" -R "pattern" path

etc.

ABC

-A 옵션은 매칭된 라인 이후의 N개의 줄을 추가로 출력한다.
-B 옵션은 매칭된 라인 이전의 N개의 줄을 추가로 출력한다.
-C 옵션은 매칭된 라인 이전, 이후의 N개의 줄을 추가로 출력한다.

$ cat bbb
A
AA
AAA
ccccccccccccccc
ccccccccccccccc
ccccccccccccccc
ccccccccccccccc
ccccccccccccccc
ccccccccccccccc
AAAA
AAAAA
$ grep -A 3 "AAA" bbb
AAA
ccccccccccccccc
ccccccccccccccc
ccccccccccccccc
--
AAAA
AAAAA
-n, 줄 번호 출력
$ grep -n "AAA" bbb
3:AAA
4:AAAA
5:AAAAA
-c, 카운팅
$ grep -c "AAA" bbb
3