다음 필드를 포함하는 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
*
하나의 파일이 아닌 폴더의 모든 파일을 검색하려면 파일 이름으로 사용할 수 있습니다.