Извлечение совпадающей строки из текста с помощью findstr - PullRequest
0 голосов
/ 14 октября 2010

У меня есть текст в каком-то файле, например

<Variable name="URL"  value="http://url:port"/>

Я хочу URL в теге значения (http://url:port).

Используемые мной команда и регулярное выражение:

FindStr /R /C:"\"URL\" *value=*\"*\"" <filename>

Приведенное выше регулярное выражение соответствует строке в файле, но не может извлечь эту строку URL

есть предложения?

1 Ответ

1 голос
/ 14 октября 2010

findstr не будет захватывать какие-либо значения для вас.Если вы можете скачать инструменты, вы можете попробовать gawk для Windows

C:\test>gawk "/value/{ gsub(/.*value=\042|\042.*/,\"\");print }" file
http://url:port

Если нет, вы можете использовать vbscript

strFile= WScript.Arguments(0)
Set objFS = CreateObject( "Scripting.FileSystemObject" )
Set d = CreateObject("Scripting.Dictionary")
Set objFile = objFS.OpenTextFile(strFile)
Do Until objFile.AtEndOfStream
    strLine=objFile.ReadLine    
    If InStr(strLine,"value=") > 0 Then
        s=Split(strLine,"value=")       
        s1=Replace(s(1),"/>","")
        WScript.Echo s1
    End If
Loop

использование:

C:\test>cscript //nologo test.vbs file
"http://url:port"
...