2013-05-17 158 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

你好@Endoro, 感謝您的幫助,這看起來像會讓我走下正確的道路。你如何運行?我試圖把它放到一個批處理文件中並運行它,但它不終止。 –

+2

@LincolnRose - 如果重定向輸入不以''(換行符)結尾,則FINDSTR掛在XP和Windows 7上。有關更多信息,請參見[Windows FINDSTR命令的未記錄功能和限制?](http://stackoverflow.com/q/8844868/1012053)。取消重定向並改用'('findstr「SIPEngine QBE」file.txt')',它應該可以工作。 – dbenham

+0

@dbenham - 謝謝。 – Endoro