쩨이엠 개발 블로그

[linux] Binary file * matches 및 Grep option 사용법 본문

개발/ETC

[linux] Binary file * matches 및 Grep option 사용법

쩨이엠 2022. 4. 5. 21:54
728x90
반응형

리눅스 명령어 중 grep을 사용했을 때 제대로 나오지 않고 위의 "Binary file {파일이름} matches" 이 뜰 때

 
  $ grep 'api/v1/event' logs/application.log
	Binary file logs/application.log matches
  $ grep --binary-files=text 'api/v1/event' logs/application.log
  2022-04-05_17:41:40.413 INFO [reactor-http-epoll-3] [com.test.ReactiveLoggingFilter:131] ::: [e75e01cb-1078737] Request: method=POST, path=/api/v1/event
  2022-04-05_17:43:08.961 INFO [reactor-http-epoll-3] [com.test.ReactiveLoggingFilter:131] ::: [d7870b92-1079620] Request: method=POST, path=/api/v1/event
  2022-04-05_17:45:42.556 INFO [reactor-http-epoll-2] [com.test.ReactiveLoggingFilter:131] ::: [7c44bead-1081130] Request: method=POST, path=/api/v1/event

--binary-files=text 혹은 -a를 추가하면 제대로 찾던 데이터들이 나오게 된다

 

 

리눅스 Grep 사용법 (grep --help 를 사용하면 옵션 등을 알 수 있다)

Usage: grep [OPTION]... PATTERN [FILE]...
PATTERN은 기본적으로 기본 정규식을 따른다
Example: grep -i 'hello world' menu.h main.c

 

리눅스 옵션은 총 4가지로 나눠진다

1. Regexp selection and interpretation ( 정규 표현식 선택 및 해설)

 
 Regexp selection and interpretation: 정규 표현식 선택 및 해설
  -E, --extended-regexp     PATTERN을 확장 정규표현식으로 설정
  -F, --fixed-strings       PATTERN을 줄바꿈으로 구분된 고정문자열의 집합으로 설정
  -G, --basic-regexp        PATTERN을 기본정규식으로 설정 (default)
  -P, --perl-regexp         PATTERN을 Perl 정규식으로 설정
  -e, --regexp=PATTERN      PATTERN을 사용해 매칭한다
  -f, --file=FILE           File에서 PATTERN 가져오기
  -i, --ignore-case         대소문자 무시
  -w, --word-regexp         전체 단어가 PATTERN과 일치하도록 함
  -x, --line-regexp         전체 라인이 PATTERN과 일치하도록 함
  -z, --null-data           라인을 new Line이 아닌 0 byte로 설정

 

 

2. Miscellaneous ( 설정 정보)

 
 Miscellaneous: 설정 정보
  -s, --no-messages         오류메세지 미표시
  -v, --invert-match        일치하지 않는 줄 선택
  -V, --version             버전 정보를 표시하고 종료
      --help                도움말 텍스트를 표시하고 종료

 

 

3. Output control ( 출력 제어 )

 
 Output control: 출력 제어
  -m, --max-count=NUM       최대 갯수 (NUM) 제한
  -b, --byte-offset         바이트 오프셋을 함께 출력
  -n, --line-number         아웃풋 라인의 줄넘버를 함께 표시
  -H, --with-filename       검색 결과에 대한 파일 이름을 함께 표시
  -h, --no-filename         검색 결과에 대한 파일 이름 무시
      --label=LABEL         검색 결과 출력시 LABEL을 파일 이름(접두사)으로 표시
  -o, --only-matching       PATTERN과 매칭된 데이터만 표시
  -q, --quiet, --silent     검색 결과를 출력하지 않음
      --binary-files=TYPE   바이너리 타입을 'binary', 'text', 'without-match' 중 하나로 설정
  -a, --text                --binary-files=text 와 동일
  -I                        --binary-files=without-match 와 동일
  -d, --directories=ACTION  디렉토리 처리 방법 :'read', 'recurse','skip'
  -D, --devices=ACTION      장치, FIFOs, 소켓 처리 방법 :'read' or 'skip'
  -r, --recursive           --directories=recurse와 동일
  -R, --dereference-recursive
                            심볼릭 링크를 따름
      --include=FILE_PATTERN
                            FILE_PATTERN과 일치하는 파일만 검색
      --exclude=FILE_PATTERN
                            FILE_PATTERN과 일치하는 파일 및 디렉토리 제외하고 검색
      --exclude-from=FILE   FILE의 패턴과 일치하는 파일 제외하고 검색
      --exclude-dir=PATTERN PATTERN과 일치하는 디렉토리 제외하고 검색
  -L, --files-without-match 일치항목이 없는 파일 이름만 출력
  -l, --files-with-matches  일치항목이 포함된 파일의 이름만 출력
  -c, --count               FILE당 일치하는 라인 갯수만 출력
  -T, --initial-tab         탭 정렬
  -Z, --null                파일 이름만 출력

 

 

4. Context control: 컨텍스트 제어

 
 Context control: 컨텍스트 제어
  -B, --before-context=NUM  NUM라인 위의 데이터를 출력
  -A, --after-context=NUM   NUM라인 밑의 데이터를 출력
  -C, --context=NUM         NUM라인의 데이터 출력
  -NUM                      --context=NUM와 동일
      --group-separator=SEP SEP을 구분 기호로 사용
      --no-group-separator  빈 문자열을 구분 기호로 사용
      --color[=WHEN],
      --colour[=WHEN]       일치하는 문자열을 강조한다 
      						(WHEN은 'always', 'never', 'auto' 중 하나)
  -U, --binary              EOL에서 CR문자를 제거하지 않음 (MSDOS/Windows)
  -u, --unix-byte-offsets   CR 무시
                            (MSDOS/Windows)

 

 

5. 도움말

 

 
 'egrep' means 'grep -E'.  'fgrep' means 'grep -F'.
 'egrep'은 'grep -E'를 의미합니다. 'fgrep'은 'grep -F'를 의미한다.

 Direct invocation as either 'egrep' or 'fgrep' is deprecated.
 'egrep' 또는 'fgrep'과 같은 직접 호출은 더 이상 사용하지 않는다.

 When FILE is -, read standard input.  
 FILE이 -이면 표준으로 읽는다.

 With no FILE, read . if a command-line -r is given, - otherwise.  
 If fewer than two FILEs are given, assume -h.
 FILE이 없으면 명령줄인 경우 읽기 -r이 주어지고
 2개 미만의 FILE이 제공된 경우 -h로 가정한다.

 Exit status is 0 if any line is selected, 1 otherwise;
 if any error occurs and -q is not given, the exit status is 2.
 라인이 선택되면 종료 상태는 0이고 그렇지 않으면 1.
 오류가 발생하고 -q가 제공되지 않으면 종료 상태는 2이다.
728x90
반응형
Comments