2017-03-17 3 views
0

Ich bin auf der Suche nach was ich hoffe, ist eine einfache Sache. Ich versuche, Daten aus einer CSV-Datei zu ziehen, aber die Daten zwischen zwei Zeilen Bindestriche wie folgt:PowerShell - Extrahieren Sie Daten zwischen zwei Zeilen

File1 

header1,header2,header3,header4 
-------------------------------------------------------- 
data1,data2,data3,data4 
data1,data2,data3,data4 
data1,data2,data3,data4 
data1,data2,data3,data4 
data1,data2,data3,data4 
data1,data2,data3,data4 
data1,data2,data3,data4 
data1,data2,data3,data4 
data1,data2,data3,data4 
data1,data2,data3,data4 
data1,data2,data3,data4 
data1,data2,data3,data4 
data1,data2,data3,data4 
-------------------------------------------------------- 
end of file 

ich nur die Daten zwischen den Zeilen Bindestriche gespeichert werden sollen. Ich habe Probleme, einen Weg zu finden, da die Zeilen genau gleich sind. Danke für Ihre Hilfe.

Antwort

0

Lösung 3:

$firstrowfounded=$false 

Get-Content "C:\Temp\test.txt" | foreach { 
    if ($firstrowfounded) 
    { 
     if ($_ -like "*--*") 
     { 
      break 
     } 
     else 
     { 
      $_ 
     } 

    } 
    elseif ($_ -like "*--*") 
    { 
     $firstrowfounded=$true 
    } 

} 
0

Dies wird greifen, was Sie wollen und geben es in output.csv

$input = "C:\example\File1.csv" 
$output = "C:\example\output.csv" 

Get-Content $input | Where-Object {$_ -like "*,*"} | Select-Object -Skip 1 | Out-File $output 

Jetzt können Sie nur tun Get-Content $output

0

Lösung 2

$startend=(Select-String -Path "C:\Temp\test.txt" -Pattern "--------------------------------------------------------").LineNumber 
(Get-Content "C:\Temp\test.txt")[$startend[0]..($startend[1]-2)] 
0

Lösung 1:

Get-Content "C:\Temp\test.txt" | where {$_ -like '*,*'} | ConvertFrom-Csv 
Verwandte Themen