根据命令行上的匹配字符串输出整行

时间:2014-12-05 02:02:03

标签: windows string command-line

我的输入文件如下:

 application         database            variable            value              
+-------------------+-------------------+-------------------+-------------------
 O_PrTot             Rptg                ClosedMonthsFY13    Jan:Dec            
 O_PrTot             Rptg                OMNICORE_Year       FY14               
 O_PrTot             Rptg                ClosedMonthsFY14    Jan:Oct         

我需要找到ClosedMonthsFY14的值,即Jan:Oct并输出此输出 进入.txt文件。

谢谢

2 个答案:

答案 0 :(得分:0)

根据您的标题“输出基于匹配字符串的整行”和您的评论“并将此输出放入.txt文件”,这应该可行。我们使用FINDSTR命令,根据我链接的TechNet文章,“使用正则表达式搜索文件中的文本模式”。在这种情况下,我们并不特别需要正则表达式,但它仍然有效:

FINDSTR /I "ClosedMonthsFY14" C:\path\to\input.txt > C:\path\to\output.txt

切换/I表示使搜索不区分大小写。

答案 1 :(得分:0)

@ECHO OFF
SETLOCAL
FOR /f "tokens=3,4" %%a IN (q27307586.txt) DO IF /i "%%a"=="ClosedMonthsFY14" SET "outstring=%%b"
ECHO %outstring%
FOR /f "delims=" %%a IN ('findstr /i "ClosedMonthsFY14" q27307586.txt') DO SET "outstring2=%%a"
ECHO %outstring2:~61%


GOTO :EOF

我使用了一个名为q27307586.txt的文件,其中包含我的测试数据。

这里有两种不同的方法。第一种方法依赖于这样的假设:每列只包含一个不包含空格或逗号等分隔符的字符串。

第二种方法使用列位置;将跳过所选行中的61个字符,并将其余字符分配给变量。

要将变量实际输出到文件,只需将>"filename"附加到相应的echo

请注意,第二种方法会在行上保留尾随空格,这可能适用于您的目的,也可能不适用。

每种情况下的/i开关都会使字符串匹配不区分大小写。

(您的问题标题指出“整行”但您的叙述说您需要找到