다양한 모드로 여러 줄을 Grep

다양한 모드로 여러 줄을 Grep

다음 필드를 포함하는 AIX unix에 이 test.debug 파일이 있습니다.

in[  2: ]<0000********0000>  
in[  3: ]<0>  
in[  4: ]<000000020000>  
in[  7: ]<1113>  
in[  7: ]<80402>  
in[ 11: ]<5530>  
in[ 12: ]<181113>  
in[ 12: ]<90254>  
in[ 17: ]<1113>  
in[ 19: ]<960>  
in[ 22: ]<510101510000>  
in[ 24: ]<400>  
in[ 25: ]<4021>  
in[ 26: ]<7011>  
in[ 28: ]<181115>  
in[ 30: ]<000000020000>  
in[ 32: ]<000090>  
in[ 33: ]<589638>  
in[ 37: ]<000000000132>  
in[ 41: ]<75000001>  
in[ 42: ]<01111111111    >  
in[ 49: ]<960>
in[ 56: ]<110000553018111309025406000004>  
in[128: ]<98D6F81BFFFFFFFF>

out[000: ]<ISO9090-9999999902299>

in[129: ]<9420>

in[ 32: ]<000090>, in[ 49: ]<960>및 에코를 out[000: ]<ISO9090-9999999902299>선택할 수 있는 스크립트를 만들고 싶습니다 .in[129: ]<9420>

로그의 디렉토리는 입니다 /var/debug/logs.

답변1

찾으려는 모든 패턴을 파일에 넣고 -f 플래그를 사용하여 명령줄에서 파일을 지정할 수 있습니다.

매뉴얼 페이지를 인용하면 다음과 같습니다.

-f file, --file=file
            Read one or more newline separated patterns from file.  Empty pattern lines match every input line.
            Newlines are not considered part of a pattern.  If file is empty, nothing is matched.

그래서

grep -r -f <your file> /var/debug/logs

모든 파일의 모든 줄과 일치하는 모든 줄을 제공합니다/var/debug/logs

답변2

grep일치시키려는 각 오류 코드를 일치시킬 수 있습니다 . 일치하는 라인이 이미 출력되었으므로 echo사용할 필요가 없습니다 .grep

grep -E '000090|960|9420|out\[ *002: *\]<ISO9090-9999999902299>' /var/debug/logs/filename

*하나의 파일이 아닌 폴더의 모든 파일을 검색하려면 파일 이름으로 사용할 수 있습니다.

관련 정보