2013-05-17 2 views
0

텍스트 파일에서 특정 정보를 구문 분석하려고합니다.파일에서 구분 된 문자열 구문 분석

 
&15:44:25.3911456_0089& SIPEngine 0x208c 
N SIPUDPTransport::process_message() : remote=10.250.2.18:5060, message= 
To: sip:%QBE-JV9SKV1-SP%@10.250.2.18:5060;tag=6642 

&15:44:31.7504799_0013& SIPEngine 0x2014 
N SIPUDPTransport::process_message() : remote=10.250.2.85:5060, message= 
To: sip:%QBE-75FHBW1-SP%@10.250.2.85:5060;tag=11225 

을 다음과 같은 데이터로 해석 : 나는 다음과 같은 텍스트를 취할 수 있도록하고 싶습니다

&%
15:44:25.3911456_0089,QBE-JV9SKV1-SP 
15:44:31.7504799_0013,QBE-75FHBW1-SP 

가 구분 기호로가 추가되었습니다. 찾기와 바꾸기를 통해 창의력을 발휘하여 이와 같은 구분 기호를 추가 할 수 있습니다.

이렇게 데이터를 구문 분석하는 방법에 대한 도움을 주시면 매우 감사하겠습니다. SED, FOR /F 및 기타 유틸리티를 사용하려했지만 아직 많은 행운을 얻지 못했습니다. 정보의 패턴은 항상 하나씩 반복됩니다.

필자는 본질적으로 텍스트 파일 내에서 구분 된 문자열을 식별하여 출력하려고하기 때문에 다른 사람들에게도 도움이 될 수 있기를 바랍니다.

미리 도움을 청하십시오!

+0

내가 dbenham의 코멘트와 관련된 내 코드를 편집했다. – Endoro

답변

1

이 시도 :

@echo off&setlocal 
(for /f "tokens=1,2delims=&%%" %%i in ('findstr "SIPEngine QBE" file.txt') do (
    set "line1=%%i" 
    set "line2=%%j" 
    setlocal enabledelayedexpansion 
    if "!line2:SIPEngine=!" neq "!line2!" (<nul set/p"=!line1!," 
    ) else if "!line2:QBE=!" neq "!line2!" echo(!line2! 
    endlocal 
))>out.txt 
type out.txt 

..output은 다음과 같습니다

15:44:25.3911456_0089,QBE-JV9SKV1-SP 
15:44:31.7504799_0013,QBE-75FHBW1-SP 
+0

안녕하세요 @ 엔도로, 도움을 주셔서 감사합니다. 그러면 올바른 길로 나를 잡을 것 같습니다. 이걸 어떻게 달리고 있니? 이 파일을 배치 파일에 넣고 실행하려고했지만 종료하지 않았습니다. –

+2

@LincolnRose - 리디렉션 된 입력이''(줄 바꿈)로 끝나지 않으면 XP 및 Windows 7에서 FINDSTR이 중단됩니다. 자세한 내용은 [Windows FINDSTR 명령의 문서화되지 않은 기능 및 제한 사항은 무엇입니까?] (http://stackoverflow.com/q/8844868/1012053)를 참조하십시오. 리디렉션을 제거하고 대신'('findstr "SIPEngine QBE"file.txt')'를 사용하면 제대로 작동합니다. – dbenham

+0

@dbenham - 감사합니다. – Endoro

관련 문제