2017-03-17 64 views
0

之間提取數據我在尋找什麼,我希望是一件簡單的事情。我試圖從.csv文件中提取數據,但數據是兩條線的連字符,例如如下之間:PowerShell的 - 兩條線

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 

我要保存僅連字符的行之間的數據。由於線條完全相同,因此無法找到實現此目的的方法。謝謝你的幫助。

回答

0

解決方案3:

$firstrowfounded=$false 

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

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

} 
0

這會抓住你想要什麼,並輸出到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 

現在,你可以做Get-Content $output

0

解決方案2

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

解決方案1:

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