我有一个超过3000行的CSV文件,但是我只想读取/获取第一个条目和最后一个条目的内容。
我有3列:BatchID,Transprinted和Date。我无法将行号映射到变量。
$csvdata=Import-Csv $file.FullName
write-host $csvdata.Length
foreach($logInCsv in $csvdata)
{
where $logInCsv.Batch_ID=$logInCsv.Length-1
{
$batchID=$logInCsv.Batch_ID
$transactionID=$logInCsv.Transaction_id
$printDate=$logInCsv.Date
}
Write-Host $batchID $transactionID $printDate
}
答案 0 :(得分:1)
它应该很简单:
$csvdata = Import-Csv $file.FullName
$csvdata | Select-Object -First 1
$csvdata | Select-Object -Last 1
答案 1 :(得分:1)
您不需要迭代行,
导入完第一个索引和最后一个索引就足够了。
带有示例输入文件:
which_result
此脚本:
> Get-Content .\SO_56497517.csv
BatchID,Transprinted,Date
1,abc,2019-01-13
2,def,2019-03-15
3,xyz,2019-06-06
产生以下输出:
## Q:\Test\2019\06\07\SO_56497517.ps1
$File = Get-Item '.\So_56497517.Csv'
$Csvdata=(Import-Csv $File.FullName)[0,-1]
$Csvdata
答案 2 :(得分:0)
要获取第一个和最后一个(无空单元格):
$csvdata = Import-Csv $file.FullName
#re-assign without empty Cells
$csvdata = $csvdata | Where-Object {-not([string]::IsNullOrEmpty($_.ColumName))}
$csvdata | Select-Object -First 1
$csvdata | Select-Object -Last 1