2016-12-14 3 views
2

Ich habe die folgende TextdateiWie extrahiere ich einen Teilstring aus einer Textdatei?

testA=foo 
testB=foobar 
testC=Whatever 

Jetzt habe ich den Wert für testB extrahieren möchten, die foobar ist. Mit meinem aktuellen Powershell-Befehl kann ich erhalte nur die ganze Zeile:

testB=foobar 

Mein Befehl lautet:

Select-String -Path .\test.txt -Pattern "testB=" -List 

Ich konnte sehen, dass es ersetzen Funktion für Strings, so dass Sie testB= mit leeren ersetzen könnten String, aber ich weiß nicht, wie ich das erreichen soll.

Antwort

5

Sie müssen nicht alles ersetzen den Wert zu erfassen. Fügen Sie stattdessen eine Erfassungsgruppe zu Ihrem Suchmuster hinzu. Dann sind Sie in der Lage, die erfassten Wert zuzugreifen:

(Select-String -Path $scripts.tmp -Pattern "testB=(.*)").Matches.Groups[1].Value 
+0

Ah, ok Wie kann ich zusätzlich den Wert trimmen. ? –

+0

Fügen Sie '.Trim()' nach '.Matches.Groups [1] .Value ' –

+0

hinzu. Sollte stattdessen .Matches [0] sein. Gruppen statt .Matches.Groups –

1
(Get-Content | where {$_ -like "testB*"}).Replace('testB=','') 
+0

ops, sorry, Typo, ( – 4c74356b41

0

Sie können Substring verwenden, zum Beispiel:

$line = 'testB=foobar' 
$res = $line.Substring($line.IndexOf('=')+1) 
Verwandte Themen