여러 내용이 포함된 로그 파일이 있습니다. 다음 예에서는 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
-i
grep이 대소문자를 독립적으로 만들기 때문에 중요합니다.
답변4
두 경우를 모두 일치시키려면 확장 grep(egrep)을 사용할 수도 있습니다. 이는 grep -E와 동일한 방식으로 작동합니다.
egrep -i -r '^Id|^id_match' *.log