[맥 터미널/Unix] grep command로 파일 내부의 패턴 찾기

grep 커맨드란 global / regular expression / print 의 첫글자에서 따온 말로, 파일이나 표준 입력을 검색하여, 정규표현식과 맞는 부분을 찾아 출력해주는 커맨드입니다. 파일 내의 패턴을 검색하기 위해선 grep 커맨드를 이용하는 것은 아주 좋은 방법입니다.

grep command

grep command의 Syntax:

grep 'word' filename

*단순히 설명을 위해 아래와 같이 ~/Test 디렉토리 안에 Dummy Text File을 3개 생성해놓았습니다.

1
2
3
~/Test (521) $ls
./        .DS_Store    example2.txt
../        example1.txt    example3.txt
cs

 

유용한 옵션

  • -i : 대소문자 구별 안하기
  • -r : recursive 옵션으로 폴더 내의 모든 파일에게 똑같은 커맨드 반복
  • -l : 매칭라인과 파일 이름만 출력
  • -v : 매칭되지 않는 라인만 출력
  • -c : 매칭라인의 개수만 출력
  • -n : 매칭된 라인 넘버 출력
  • -A[n] : n은 숫자로 매칭된 라인 뒤의 n개의 라인 출력(예: -A2)
  • -B[n] : n은 숫자로 매칭된 라인 앞의 n개의 라인 출력(예: -B2)
  • -C[n] : n은 숫자로 매칭된 라인 앞,뒤의 n개의 라인 출력(예: -C2)

grep command 실행 시 매치되는 패턴에 색깔 입히기

grep --color=always "far" example3.txt

~/.bash_profile 내에 아래 커맨드 등록시, grep command 실행 시 마다 색깔 출력

GREP_OPTIONS="--color=always";export GREP_OPTIONS

파일안의 내용 찾기

현재 폴더 내의 모든 파일 중 “far” 문자열 패턴 찾기, 입력:

$grep "far" *

출력 :

현재 폴더 내의 모든 파일 중 “far” 문자열 패턴을 대소문자 구별하지 않고 찾기, 입력:

$grep -i "far" *

출력:

Recursive option(-r, -R)을 통해 현재 폴더 내의 모든 파일에서 “far” 패턴 찾기, 입력:

$grep -r "far" .

출력:


파이프 옵션을 통해 출력된 결과물에 패턴 검색

ls 커맨드를 통해 파일 리스트 출력 후, sep이 들어가는 패턴을 대소문자 구별없이(-i) 찾기, 입력:

~/Test (544) $ls -l | grep -i "sep"

출력:


입력된 패턴의 라인을 가지지 않는 파일만 출력

현재 폴더 내에 “far”라는 문자열을 가지지 않는 라인을 가진 파일들만 출력, 입력:

$grep -lv "far" *

출력:


두가지 다른 패턴 찾기

example3.txt 파일 내에서 far 혹은 Far라는 패턴 찾아 출력, 입력:

$grep "far\|Far" example3.txt

혹은

$grep "[fF]ar" example3.txt

출력:


매칭되는 라인 수 카운팅 하기

현재 폴더 내의 모든 파일 중 “far”라는 문자열을 가진 라인 counting하기, 입력

$grep -c "far" *

출력:

1
2
3
example1.txt:0
example2.txt:0
example3.txt:2
cs

 


참고

  • [맥 터미널 / Unix] grep command의 정규표현식(regular expression)

댓글 남기기