Linux의 로그 파일에서 특정 문자를 얻는 방법

Linux의 로그 파일에서 특정 문자를 얻는 방법

여러 내용이 포함된 로그 파일이 있습니다. 다음 예에서는 U123.log의 내용을 보여줍니다. n개의 로그가 있습니다...

Accepted password for hoover from 10.0.2.2 port 4792 ss

Id : UN123P 

ID_MTCH : UnixProduction

Accepted password for hoover from 10.0.2.2 port 4792 ss

Accepted password for hoover from 10.0.2.2 port 4792 ss

Linux 명령의 출력으로 각 로그에서 Id : UN123P&를 얻을 수 있습니까? ID_MTCH우리는 약 1000개의 로그를 가지고 있으며 모든 로그에서 ID :&로 시작하는 값만 얻으려고 합니다 ID_MTCH. 샘플 출력은 다음과 같습니다.

Id : UN123P 

ID_MTCH : UnixProduction

제안해주세요

답변1

grep당신은 그것을 사용할 수 있습니다

grep -i -E 'ID|ID_MTCH' *.log

답변2

패턴이 로그 줄의 끝(처음뿐만 아니라)에도 나타날 수 있는지 여부에 따라 다음과 grep같은 앵커 정규식을 사용해야 할 수도 있습니다.

grep '^\(Id\|ID_MTCH\)' *.log

또는

grep -E '^(Id|ID_MTCH)' *.log

이것은 해당 라인에만 일치합니다시작(첫 번째 문자, 선행 공백 등 없음!) 언급된 패턴을 사용합니다.

답변3

man grep설명하다

 grep  searches  for PATTERNS in each FILE.  PATTERNS is one or patterns
       separated by newline characters, and grep prints each line that matches
       a pattern.

 grep [OPTION...] PATTERNS [FILE...]

 -i, --ignore-case
              Ignore case distinctions, so that characters that differ only in
              case match each other.

다음 코드를 사용하십시오

grep -i ID *.log

-igrep이 대소문자를 독립적으로 만들기 때문에 중요합니다.

답변4

두 경우를 모두 일치시키려면 확장 grep(egrep)을 사용할 수도 있습니다. 이는 grep -E와 동일한 방식으로 작동합니다.

egrep -i -r '^Id|^id_match' *.log

관련 정보