2016-04-08 32 views
0

テキストファイルから必要なテキストを切り取るために、テキストファイルの部分文字列を部分文字列にしようとしています。この例では部分文字列のpowershell部分文字列

ファイルが

次、これは私は2番目の前にすべてのものを削除したいテキスト

のテキスト
三行目の
二行目の試験例で含まれている場合は、 「第2の」と「第3の行」の間のすべてを取得します。だから、出力は、これは私が持っているもので、$秒でハードコードされた長さを置けば、それは動作しますが、私は長さを取得することはできません

三行目のテキスト

二行目になります変数として正しい:

$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 

答えて

1

あなたがこれを行うことができますいくつかの方法:

初段あなたは

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

はあなたが

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

または

をしたいですかを指定2次たくないものを指定します
Get-Content -Path textfile | 
    Where-Object {$_ -match '^(second|third)'} | 
    Set-Content file2.txt 
+0

優秀、ありがとうございました! – adjuzy

0

ここで私は、テキストデータを取得して、1本の線でそれを分割する(`nは)そうやっていた文字列の行の配列を作ります。次に、配列列挙[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

本当にありがとうございます。私の実際のファイルは例よりもはるかに大きいので、翻訳する方法がわからない – adjuzy