제육's 휘발성 코딩
article thumbnail
반응형

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

 

https://www.ibm.com/docs/en/aix/7.2?topic=g-grep-command

https://www.softwaretestinghelp.com/grep-command-in-unix/

반응형
profile

제육's 휘발성 코딩

@sasca37

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요! 맞구독은 언제나 환영입니다^^