2013-08-10 2 views
-1

여러 파일에서 수천 개의 로그 항목을보고 특정 단어가있는 줄을 찾아야합니다. 한 단어가 들어있는 줄 목록에서 줄의 일부인 고유 한 줄이있는 줄을 필터링해야합니다.필터 로그 파일 및 선택 필터 만 고유 값 표시

예를 들어 아래 로그 파일을보고 "Test"라는 단어가 포함 된 모든 로그 행을 찾아야한다고 말할 수 있습니다. 그런 다음 "Test"라는 단어가 포함 된 모든 행 중에서 나머지 행을보고 각 이벤트의 인스턴스 하나만 선택해야합니다. 예를 들어 "Source 192.168.0.1 Port 23 Destination 192.168.0.2 Port 23"이 포함 된 두 줄이있는 경우 줄의 나머지 부분과 관계없이 한 줄만 기록하려고합니다.

+0

좋은 답변이있는 질문은 삭제하지 마십시오. 편집을 취소했습니다. –

답변

0

* nix 명령 줄에는 grep (구현마다 약간 씩 다름)이 있습니다. GNU/grep에는 첫 번째 일치시 멈추는 "-m"스위치가 있습니다 (예 :

$ grep Test log.txt | grep -m1 'Source 192.168.0.1 Port 23 Destination 192.168.0.2 Port 23' 
-10-30-123-012-031-22 Test Source 192.168.0.1 Port 23 Destination 192.168.0.2 Port 23 djlkdj 

) 특정 부분에 대한 로그 파일에 "테스트"하고 걱정 만, 나는 sed과 로그 파일에 "깨끗한"좋아 :

$ grep Test log.txt | sed 's/.*Test/Test/;s/ djlkdj$//' | sort | uniq -c 
    4 Test Source 192.168.0.1 Port 23 Destination 192.168.0.2 Port 23 
    2 Test Source 192.168.0.1 Port 23 Destination 192.168.0.222 Port 25 
    4 Test Source 192.168.0.1 Port 25 Destination 192.168.0.2 Port 23 
    2 Test Source 192.168.5.1 Port 23 Destination 192.168.0.2 Port 23 

확실하지 않음이 당신이 원하는 무엇을합니다.