2013-06-18 3 views
0

FIND 또는 FINDSTR 명령을 사용하여 로그 파일에서 특정 문자열을 찾은 다음 해당 문자열을 위의 1 행과 1과 함께 반환하는 데 문제가 있습니다 일치하는 줄 아래 줄.문자열과 일치하는 행을 검색하는 Windows FindStr

지금까지 시도한 유일한 명령입니다. 온라인 검색을 시도했지만 유용한 것은 없습니다. \ Log.txt의

샘플 로그 데이터 (Log.txt의) : C를

FINDSTR/N "탐지 된 네트워크 문제"

 
1371524155 Tue Jun 18 10:55:55 2013 
1371524160 Tue Jun 18 10:56:00 2013 
1371524165 Tue Jun 18 10:56:05 2013 
NETWORK ISSUE DETECTED 
1371523243 Tue Jun 18 10:40:43 2013 
1371523248 Tue Jun 18 10:40:48 2013 
1371523253 Tue Jun 18 10:40:53 2013 

소망 출력 :

 
1371524165 Tue Jun 18 10:56:05 2013 
NETWORK ISSUE DETECTED 
1371523243 Tue Jun 18 10:40:43 2013 

대한 음미 너의 친절한 도움.

감사합니다.

+0

안녕하세요, 저 밖에서 저를 도울 수있는 사람이 있습니까? 고마워 :) – Peter

+0

나는 똑같은 것을 찾고 있었다 .... 나는 문제로부터 다음 10 줄을 원한다는 것을 제외하고는. 도움이되는지 확인하기 위해 DOS에 태그를 추가해 보겠습니다. – JeffJak

+0

'findstr' 문서에 이것이 가능하다고 말하는 정보가 보이지 않습니다. [여기] (http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs) /en-us/findstr.mspx?mfr=true). 'findstr'이이 기능을 지원한다는 말은 아무것도 없다는 사실 때문에 당신이 여기서 대답을 얻지 못할 수도 있습니다. –

답변

0

이전 질문, 방금 발견했습니다.

@echo off 
setlocal enabledelayedexpansion 

for /f "tokens=1 delims=[]" %%i in ('type test.txt^|find /n "NETWORK ISSUE DETECTED"') do (
    set /a a=%%i-1 
    set /a b=%%i+1 
    for /f "tokens=1,* delims=[]" %%j in ('find /n /v "" test.txt^|findstr /l "[!a!] [%%i] [!b!]"') do echo %%k 
    echo/ 
) 

작동 방식 : 번호 매기기, "네트워크 문제 발견"행 번호 및 행 번호 찾기; [linenumber-1], [linenumber], [linenumber +1] 라인을 찾아서 인쇄하십시오.