로그 출력에서 ​​여러 항목을 찾는 방법은 무엇입니까?

로그 출력에서 ​​여러 항목을 찾는 방법은 무엇입니까?

현재 grep을 사용하여 로그 출력에서 ​​문자열을 찾고 있습니다. 새로운 작업에서는 다양한 파일에서 여러 항목을 찾아야 합니다. 특히 스위치 포트에 연결된 MAC 주소 항목입니다. 네트워크(5,000개 이상의 장치)를 감사한 후에는 스위치 포트 1에서 오는 것으로 보고되는 단일 MAC가 있는 파일을 찾는 것에 대해 걱정하지 않습니다. 스위치가 스위치 포트 1에서 2개 이상의 MAC을 학습하려면 이러한 파일을 찾아 해당 정보를 출력해야 합니다.

이상적으로는 한 줄에서 48개 포트를 모두 검색할 수 있다면 작업이 더 쉬워질 것입니다. 이 목록을 48번이나 통과해야 한다고 해서 세상이 끝나는 것은 아닙니다.

미리 감사드립니다. 죄송합니다. 이 플랫폼에 대한 첫 번째 질문입니다.

지금까지 내가 한 일의 예:

grep "ge-0/0/2.0" example1.log
INTERNET       de:ad:be:ef:00:01 Learn       2:21 ge-0/0/2.0
INTERNET       de:ad:be:ef:00:02 Learn          0 ge-0/0/2.0
DATA           de:ad:be:ef:01:01 Learn       4:20 ge-0/0/2.0

grep "ge-0/0/20.0" example1.log
POS            de:ad:be:ef:02:01 Learn          0 ge-0/0/20.0

grep "ge-0/0/2*.0" example1.log
INTERNET       de:ad:be:ef:00:01 Learn       2:21 ge-0/0/2.0
INTERNET       de:ad:be:ef:00:02 Learn          0 ge-0/0/2.0
DATA           de:ad:be:ef:01:02 Learn          0 ge-0/0/30.0
DATA           de:ad:be:ef:01:01 Learn       4:20 ge-0/0/2.0
POS            de:ad:be:ef:02:02 Learn          0 ge-0/0/10.0
POS            de:ad:be:ef:02:01 Learn          0 ge-0/0/20.0

그러나 원시 정보를 얻는 것은 지루하고 오류가 발생하기 쉽습니다. 내 모든 스위치는 출력을 보기 전에 더 쉽게 만들 수 있도록 동일한 2문자로 시작합니다. 위의 ge-0/0/20.0과 같은 한 줄 항목은 쉽게 혼합됩니다.

위의 예에서 내가 찾고 있는 것은 정확히 다음과 같습니다.

INTERNET       de:ad:be:ef:00:01 Learn       2:21 ge-0/0/2.0
INTERNET       de:ad:be:ef:00:02 Learn          0 ge-0/0/2.0
DATA           de:ad:be:ef:01:01 Learn       4:20 ge-0/0/2.0

답변1

나는 당신이 다중 모드 grep을 찾고 있다고 생각합니다.

grep 'pattern1\|pattern2' logfile

또는

grep -E 'pattern1|pattern2' logfile

패턴의 수는 원하는만큼 길 수 있습니다. pattern1OR 과 일치하는 행을 인쇄합니다 pattern2.

관련 정보