我正在寻找我希望是一件简单的事情。我试图从.csv文件中提取数据,但数据是在两行连字符之间,如下所示:
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 :(得分: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
答案 1 :(得分:0)
解决方案2
$startend=(Select-String -Path "C:\Temp\test.txt" -Pattern "--------------------------------------------------------").LineNumber
(Get-Content "C:\Temp\test.txt")[$startend[0]..($startend[1]-2)]
答案 2 :(得分:0)
解决方案1:
Get-Content "C:\Temp\test.txt" | where {$_ -like '*,*'} | ConvertFrom-Csv
答案 3 :(得分:0)
解决方案3:
$firstrowfounded=$false
Get-Content "C:\Temp\test.txt" | foreach {
if ($firstrowfounded )
{
if ($_ -like "*--*")
{
break
}
else
{
$_
}
}
elseif ($_ -like "*--*")
{
$firstrowfounded=$true
}
}