2016-04-08 15 views
0

Metin dosyasından ihtiyacım olan metni kesmek için bir metin dosyasının bir alt dizesini alt katmana yerleştirmeye çalışıyorum. Bu örnekteAlt tabakaya ilişkin alt tabaka alt dizesi

dosya içeriyorsa

bu bir test örneği metnin
ikinci satır olan aşağıdaki metin

Ben ikinci önce her şeyi kaldırmak istediğiniz

ait
üçüncü satır, sonra "ikinci" ve "üçüncü satır" arasında her şeyi alın. Yani çıkış Bu benim ne var

metin
üçüncü hattın

ikinci satır olacak ve $ ikinci bir kodlanmış uzunluğunu koyarsanız çalışır, ancak uzunluk alamayan İşte

$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 

cevap

1

çift bunu yapabilirdi:

birinci Eğer

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

ne istiyorsun belirtmek ikinci istemiyorum neyi belirtmek

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

veya

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

Mükemmel, Teşekkürler! – adjuzy

0

metin verilerini alma ve daha sonra dize hatlarının bir dizi yapacak bunu yaparken tek bir satır (`n) göre ayırmak edildi: bir değişken olarak doğru. Ardından dizi numaralandırmasıyla dizeleri alırım [1..2]. yollarından

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

Yardımlarınız için teşekkür ederim, ancak gerçek dosyam, örneklemden çok daha büyüktür, bu nedenle nasıl tercüme edeceğinizden emin değilsiniz – adjuzy