2017-01-23 5 views
0

여러 개의 CSV 파일을 병합해야합니다. 모든 단일 CSV 파일에는 헤더가 있고 두 번째 행에는 필자가 필요하지 않은 텍스트가 있습니다.Import-Csv 선택 -Skip

머리글에 대한 설명이 | Select -Skip 1 인 것으로 나타났습니다. 이제 어떻게 3 행을 건너 뛸 수 있는지 궁금합니다.

나는이 시도, 그러나 이것은 다른 행 사이에 임의의 행을 건너 뛸 수없는 나에게 빈 파일

Get-ChildItem -Path $CSVFolder -Recurse -Filter "*.csv" | %{ 
    Import-Csv $_.FullName -Header header1, header3, header4 | 
    Select -Skip 1 | Select -Skip 2 
} | Export-Csv "C:\Export\result.csv" -NoTypeInformation 

답변

0

Select-Object을 제공합니다. 텍스트 입력 파일에서 특정 행을 제거하려는 경우 카운터와 같은 작업을 수행 할 수 있습니다. 같은 :

$cnt = 0 
Import-Csv 'C:\path\to\input.csv' | 
    Where-Object { ($cnt++) -ne 3 } | 
    Export-Csv 'C:\path\to\output.csv' -NoType 

귀하의 의견 CSV의 레코드가 중첩되어 있지 않은 경우 행은 또한 (때문에 적은 파싱 오버 헤드) 조금 더 빠른 Import-Csv/Export-Csv보다는 아마 Get-Content/Set-Content을 사용할 수 나옵니다. 헤더 행을 고려하기 위해 건너 뛸 행 번호를 하나씩 늘리십시오.

$cnt = 0 
Get-Content 'C:\path\to\input.csv' | 
    Where-Object { ($cnt++) -ne 4 } | 
    Set-Content 'C:\path\to\output.csv' 
0

$i=0; 
import-csv "C:\temp2\missing.csv" | %{$i++; if ($i -ne 3) {$_}} | export-csv "C:\temp2\result.csv" -NoTypeInformation 
시도