본문 바로가기

Infra Architecture/linux

[ Shell Script ] grep 명령어

반응형

옵션

-o 매칭되는 문자열만 출력하는 걸 쓰려했는데 awk로 해결했었음.

-E 정규식으로 검색하려면 이걸로 해야됨.

    grep [OPTION...] PATTERN [FILE...]
        -E        : PATTERN을 확장 정규 표현식(Extended RegEx)으로 해석.
        -F        : PATTERN을 정규 표현식(RegEx)이 아닌 일반 문자열로 해석.
        -G        : PATTERN을 기본 정규 표현식(Basic RegEx)으로 해석.
        -P        : PATTERN을 Perl 정규 표현식(Perl RegEx)으로 해석.
        -e        : 매칭을 위한 PATTERN 전달.
        -f        : 파일에 기록된 내용을 PATTERN으로 사용.
        -i        : 대/소문자 무시.
        -v        : 매칭되는 PATTERN이 존재하지 않는 라인 선택.
        -w        : 단어(word) 단위로 매칭.
        -x        : 라인(line) 단위로 매칭.
        -z        : 라인을 newline(\n)이 아닌 NULL(\0)로 구분.
        -m        : 최대 검색 결과 갯수 제한.
        -b        : 패턴이 매치된 각 라인(-o 사용 시 문자열)의 바이트 옵셋 출력.
        -n        : 검색 결과 출력 라인 앞에 라인 번호 출력.
        -H        : 검색 결과 출력 라인 앞에 파일 이름 표시.
        -h        : 검색 결과 출력 시, 파일 이름 무시.
        -o        : 매치되는 문자열만 표시.
        -q        : 검색 결과 출력하지 않음.
        -a        : 바이너리 파일을 텍스트 파일처럼 처리.
        -I        : 바이너리 파일은 검사하지 않음.
        -d        : 디렉토리 처리 방식 지정. (read, recurse, skip)
        -D        : 장치 파일 처리 방식 지정. (read, skip)
        -r        : 하위 디렉토리 탐색.
        -R        : 심볼릭 링크를 따라가며 모든 하위 디렉토리 탐색.
        -L        : PATTERN이 존재하지 않는 파일 이름만 표시.
        -l        : 패턴이 존재하는 파일 이름만 표시.
        -c        : 파일 당 패턴이 일치하는 라인의 갯수 출력.

리눅스 grep 명령어 사용법. (Linux grep command) - 리눅스 문자열 검색 :: 개발자를 위한 레시피 (tistory.com) 참조

참고 사이트

리눅스 grep 명령어 사용법. (Linux grep command) - 리눅스 문자열 검색 :: 개발자를 위한 레시피 (tistory.com) 참조

[Linux] grep 명령어에서 AND, OR, NOT 조건 사용하기 (tistory.com)

 

 

 

예외 사항

grep명령어 사용시 'binary file matches' warning이 발생함.

grep명령어에 -I 옵션을 주면 제외하고 출력함.

 

-a 옵션은 binary파일도 텍스트로 보고 포함하여 출력함.

test@ykd2:~/Accesslog_sample/internal/internal_1$ echo $(grep  'GET' access.202209220000 | wc -l | cut -d ' ' -f 1)
grep: access.202209220000: binary file matches
657944
test@ykd2:~/Accesslog_sample/internal/internal_1$ echo $(grep -I 'GET' access.202209220000 | wc -l | cut -d ' ' -f 1)
657944

 

같은 정규식으로 grep으로 했을때와 awk 패턴으로 했을때 awk가 못잡는 부분이 있는것 같음.

반응형