2016-04-08 12 views
0

Ich versuche, eine Teilzeichenfolge einer Textdatei Teilzeichenfolge, um den Text aus einer Textdatei brauche ich auszuschneiden.Powershell Teilzeichenfolge der Teilzeichenfolge

In diesem Beispiel, wenn die Datei des enthält folgende

Dies ist ein Test Beispiel
zweite Textzeile
dritte Textzeile

Ich will alles entfernen, bevor die zweiten, dann bekommst du alles zwischen "zweiter" und "dritter Zeile". So würde der Ausgang

zweite Textzeile
dritte Zeile sein

Dies ist, was ich habe, und es funktioniert, wenn eine hartkodierte Länge in $ Sekunde setzen, aber ich kann nicht die Länge erhalten korrekt als Variable:

$text = (Get-Content -raw Test.txt | Out-String).Trim() 

$first = $text.IndexOf('second') 

$second = $text.Substring($text.IndexOf('second'), ($text.length-1)) 

$third = $second.Substring(0, $second.IndexOf('third line')) 

$text.Substring($first, $third) | Set-Content file2.txt 

Antwort

1

paar Möglichkeiten, können Sie dies tun:

erster angeben, was Sie nicht wollen,

Get-Content -Path textfile | 
    Where-Object {$_ -NotLike 'this is a*'} | 
    Set-Content file2.txt 

zweit- angeben, was Sie

Get-Content -Path textfile | 
    Where-Object {$_ -Like 'second*' -or $_ -like 'third*'} | 
    Set-Content file2.txt 

oder

wollen
Get-Content -Path textfile | 
    Where-Object {$_ -match '^(second|third)'} | 
    Set-Content file2.txt 
+0

Excellent, Thank you! – adjuzy

0

Hier Textdaten ich war immer und es dann durch einzelne Linie Aufspalten (`n) Dabei wird ein Array von String-Linien machen. Dann bekomme ich Strings Nummer durch Array-Enumeration [1..2].

PS C:\> $string = @" 
this is a test example 
second line of text 
third line of text 
"@ 

$string.Split("`n")[1..2] 
second line of text 
third line of text 
+0

Vielen Dank für Ihre Hilfe, aber meine echte Datei ist viel größer als das Beispiel, so nicht sicher, wie man es übersetzt – adjuzy