Windows cmd - findstr和gawk或者如何将以下数据拉出来

时间:2012-01-23 21:58:04

标签: parsing cmd gawk findstr

我想知道是否可以使用findstr和/或gawk来确切地返回windows cmd的输出。我现在正在返回输出原始数据,然后剥离空白行,并解析出我需要的内容。就像学习一样,我希望我能看到如何做得更好。

原始输出:

Change 2086888 on 2012/01/23 by user1@server1

        test_description_1.2.3.4@29816

Change 2086888 on 2012/01/23 by user1@server2

        test_description2_4.5.6.7@29816

Change 2078677 on 2012/01/20 by user2@server1

        test_description3_7.8.9.10@29816

我接受输出并用php解析它:

1. 2086888,test_description_1.2.3.4@29816
2. 2086888,test_description2_4.5.6.7@29816
3. 2078677,test_description3_7.8.9.10@29816

为了让自己更容易,我通过将它输送到findstr并使用/ V“^ $”从输出中删除空白行。所以它是findstr / V“^ $”。

如何直接从命令行获取我使用php解析的输出?

1 个答案:

答案 0 :(得分:1)

cmd.exe中的

for命令会跳过空行,因此以这种方式解析它可能更容易:

@Echo Off
setlocal enabledelayedexpansion
set linenum=1
for /f "tokens=1,2" %%A in (output.txt) do @(
  if %%A==Change set result=%%B
  if not %%A==Change (
    echo !linenum!. !result!,%%A
    set /a linenum=!linenum!+1
  )
)   
endlocal