Windows cmd - findstr и gawk или как бы вытащить приведенные ниже данные - PullRequest
0 голосов
/ 24 января 2012

Мне было интересно, можно ли использовать findstr и / или gawk, чтобы вернуть вывод команды windows именно так, как мне нужно.В настоящее время я возвращаю вывод raw, затем удаляю пустые строки и анализирую то, что мне нужно.Просто как учеба, я надеялся, что смогу увидеть, как это можно сделать лучше.

Необработанный вывод:

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 Ответ

1 голос
/ 24 января 2012
Команда

for в cmd.exe пропускает пустые строки, поэтому ее проще разобрать следующим образом:

@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
...