shell_script

shell 기본 grep

sysman 2021. 7. 27. 19:32

 

 

grep [옵션]  패턴 [파일]

-i : 대소문자 구분하지 않고 패턴 검색

 

grep [옵션] [-e 패턴 | -f 파일] [파일]

-e : 여러개 패턴을 검색(검색하고자 하는 패턴이 하나 이상)

-f : 패턴이 저장되어 있는 파일을 여러개 이용해 검색

 

1) 패턴 사용

대괄호가 앞뒤에 있는 문자열 검색

-e, -i 사용

 

2) 파일을 사용하는 경우

-f : 파일에 저장된 패턴을 이용

3) | 를 이용

cat으로 확인한 nova.conf 파일 내용이 grep의 검색 대상임

 

1. grep 정보 옵션

 

옵션 내용
--help grep 도움말
-V, --version grep 버전 정보 및 라이센스 정보

 

# grep --help

# grep -V

 

2. 패턴 문법

옵션 내용
-E, --extended-regexp 확장 정규 표현식에 해당하는 패턴을 검색
-F, --fixed-strings 여러 줄로 되어 있는 문자열을 검색
-G, --basic-regexp 기본 정규 표현식에 해당하는 패턴을 검색할 때, 기본값임에 따라 옵션을 생략하면 -G옵션으로 적용
-P, --perl-regexp Perl 방식의 정규 표현식에 해당하는 패턴을 검색할 때 사용되는 옵션으로 다르 옵션에 비해 잘 사용 되지는 않음

 

1) -E 옵션

 

#-E옵션 없이 사용

#-E 옵션 사용( 정규표현식 ? 가 적용됨)

 

2) -F 옵션(패턴이 여러줄일 경우)

3) -G 옵션 (기본 정규식 패턴을 검색, 디폴트)

4) -P 옵션 ( perl에서 사용하는 정규표현식으로 패턴 검색)

['와 , 사이 문자열 검색

 

3. 매칭 제어

옵션 내용
-e 패턴, --regexp=패턴 여러개 패턴을 검색, OR 조건으로 검색이룸
-f 파일, --file=파일 -e 옵션과 동일 하나 대신 패턴이 파일에 관련 명령어를 넣어 이것을 이용해 검색
-i, --ignore-case 패턴 검색시 대소문자 구분 무시
-v, --invert-match 해당 패턴을 제외하고 검색할 때, 주석을 제거한 파일 내용만  볼 경우 주로 사용
-w, --word-regexp 검색하고자 하는 단어가 정확하게 있는 라인만 검색
-x, --line-regexp 검색하고자 하는 패턴과 정확하게 일치하는 라인만 검색
-y -i 옵션과 동일한 기능

 

일반 문자로 검색

파일로 검색

 

-i로 대소문자 구분 안함

 

-v는 해당 패턴 문자가 있는 라인을 제외한 나머지 라인 출력

-w 는 딱 그단어가 일치하는것만 출력

 

-x 라인전체가 일치할 경우에만 결과를 보여줌

-y 대소문자 구분 안하고 검색할 문자의 그 라인을 출력

 

 

4. 출력제어

옵션 내용
-c, --count 패턴과 일치하는 단어의 개수
--color GREP_COLORS 환경변수에 의해 정의된 컬러에 맞게 검색한 패턴과 동일한 문자열의 색을 바꿔서 보여줌
-L, --files-without-match 검색 대상이 되는 파일 중 패턴과 일치하는 단어가 없는 파일명을 보여줌
-I, --file-with-matches 검색 대상이 되는 파일 중 패턴과 일치하는 단어가 있는 파일명을 보여줌
-m 라인 수, --max-count=라인수 패턴과 일치하는 단어가 포함된 라인을 해당 라인 수 만큼 보여줌
-o, --only-matching 패턴과 일치하는 단어만 보여줌
-q, --quiet, --silent 패턴과 일치하는 단어가 있든 없던 아무것도 안 보여줌
-s, --no-messages 존재하지 않거나 읽을 수 없는 파일에 대한 오류 메세지를 안보여줌

 

 

5.출력라인 제어

옵션 내용
-b, --byte-offset 패턴이 포함된 출력라인의 바이트 수를 라인의 제일 앞부분에 함께 보여줌
-H, --with-filename 패턴이 포함된 출력라인의 파일명을 라인의 제일 앞부분에 함께 보여줌
-h, --no-filename -H 옵션과 반대로 패턴이 포함된 출력라인의 파일명을 보여주지 않음
--label=LABEL 파일 목록에서 특정 파일을 검색할 경우 검색라인 제일 앞부분에 라벨을 함께 보여줌, -H 옵션과 함께 사용
-n, --line-number 패턴이 포함된 출력라인 제일 앞부분에 라인 번호를 함께 보여줌
-T, --initial-tab 라인 번호나 파일명이 함께 출력될 경우 탭과 함께 간격을 조정하여 보여줌
-u, --unix-byte-offsets 패턴이 포함된 출력라인의 바이트 수를 유닉스 스타일로 보여줌, 단, -b 옵션과 함께 사용
-Z, --null 채넡이 포함된 파일명을 출력 시 뉴라인이 없이 한줄로 보여줌, -ㅣ 옵션과 함께 사용

 

 

 

6. 컨택스트 라인 제어

옵션 설명
-A 라인 수, --after-context=라인 수 패턴이 포함된 라인 후에 선언한 라인 수에 해당하는 라인 만큼 뒤로 라인을 추가
-B 라인 수, --before-context=라인 수 패턴이 포함된 라인 전에 선언한 라인 수에 해당하는 라인 만큼 앞에 라인을 추가하여 보여줌
-C 라인 수, --contest=라인 수 패턴이 포함된 라인 전, 후에 선언한 라인 수에 해당하는 라인만큼 앞, 뒤로 라인을 추가하여 보여줌
--group-separator=그룹 구분 기호 옵션 -A, -B, -C 와 함께 사용할때 패턴을  기준으로 그룹핑을 해주며, 설정한 그룹구분 기호화 함께 그룹핑을 해줌
--no-group-separator 옵션 -A, -B, -C 와 함께 사용할때 기본적으로 패턴을 기준으로 그룹핑을 해주지만, 해당 옵션을 사용하면 그룹핑을 하지 않음

 

 

7. 파일 및 디렉토리 관련 옵션

옵션 내용
-a, --text 바이너리 파일에서 해당 패턴을 검색
--binary-files=TYPE TYPE은 기본적으로 바이너리 이며, text를 사용할 경우 -a옵션과 동일한 기능을 가짐
-D ACTION,
--devices=ACTION
ACTION은 read와 skip이 있으며, read일 경우 디바이스에서 패턴을 검색하고, skip일 경우 디바이스를 검색하지 않음
-d ACTION,
--direcoties=ACTION
ACTION은 read와 skip이 있으며, read일 경우 디바이스에서 패턴을 검색하고, skip일 경우 디렉토리를 검색하지 않음
--exclude=GLOB GLOB은 검색 대상에서 제외하고자 하는 파일명을 의미하며, 파일명은 *.?./를 사용할 수 있음
--exclude-from=FILE 검색 대상에서 제외할 파일이 명확할 경우 사용
--exclude-dir=DIR 재귀검색에서 패턴 DIR과 일치하는 디렉토리 제외
-I(대문자 아이) 일치하는 데이터를 포함하지 않은 것처럼 이진 파일을처리 , 이것은 --binary-files=without-match옵션과 동일
--include=GLOB --exclude 옵션과 반대로 파일명에 해당하는 파일에서만 검색 
-r, --recursive 검색하고자 하는 디렉토리의 하위 디렉토리 파일도 검색
-R, --dereference-recursive 검색하고자 하는 디렉토리의 하위 디렉토리 파일 및 심볼릭 파일까지 검색

 

 

기타 옵션

옵션 내용
--line-buffered grep의 경우 패턴에 일치하는 모든 라인 검색이 완료된 후 화면에 보여주지만, --line-buffered옵션을 사용하면 검색된 라인별로 바로 보여줌, 많은 양의 로그 검색 시 유요하나 많이 사용하면 성능에 영향을 줄 수 있음
-U, --binary 검색 대상 파일을 바이너리로 취급하여 캐리지 리턴(CR)이나 라인피드(LF) 같은 문자를 제거하여 검색함
-z, --null-data 패턴이 포함된 파일의 전체 내용을출력

 

 

 

 

 

'shell_script' 카테고리의 다른 글

shell 기본 sed  (0) 2021.07.30
shell 기본 awk  (0) 2021.07.29
shell 기본 find  (0) 2021.07.29
shell 기본 명령문  (0) 2021.07.27
shell 명령어  (0) 2021.07.26