2013-03-27 68 views
0

如何通过findstr在多行之间检索“”之间的所有文本? 例如我有:
线路1
线路2
行3
“行4
第5行
第6行

线7
第8行DOS findstr找到引号之间的所有文本行

和我需要返回
第4行
第5行
Lin e 6

+1

相关:我如何使用FINDSTR新行正则表达式(http://stackoverflow.com/questions/5631752/how-can -i-使用-FINDSTR与 - 新行正则表达式)。 – MikeM 2013-03-27 21:19:29

回答

0

使用您的样本数据......这是我可以在没有太多努力的情况下获得的刚度。

“file'txt”包含您的数据......

@echo off 
setlocal enabledelayedexpansion 

set quote= 

for /f "tokens=*" %%a in (file.txt) do (
    set str=%%a 
    set str=!str:"=:! 

    if not "!str!"=="!str::=!" (
    if defined quote (
     set quote= 
     for %%b in (^"%%a) do set str=%%~b 
     if not "!str!"=="" if not "!str: =!"=="" echo !str! 
    ) else (
     set quote=1 
     for %%b in (%%a^") do set str=%%~b 
    ) 
) 

    if defined quote (
    if not "!str!"=="" if not "!str: =!"=="" echo !str! 
) 
) 
+0

上面的例子完美的工作,但我不能使它找到包含特定字符串的引号之间的所有行。因此,在上面的示例中,我需要返回第4行 第5行 第6行(带有换行符的引号之间的所有行),仅当引号之间的文本包含行5 – Adrian 2013-04-08 20:49:21