从文件中解析分隔的字符串

时间:2013-05-17 20:39:04

标签: string parsing text batch-file delimited

我正在尝试解析文本文件中的特定信息。我希望能够采用以下文字:

&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

&%被添加为分隔符。我可以通过查找和替换获得创意,以添加这样的分隔符。

任何有关如何解析这样的数据的帮助将不胜感激。我一直在尝试使用SEDFOR /F和其他工具,但我还没有太多运气。信息模式将一个接一个地重复。

基本上我只是想在文本文件中识别分隔的字符串并输出它们,所以我希望这也可以帮助其他人。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分: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

..输出是:

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