2017-01-23 7 views
0

複数のCSVファイルを1つにマージする必要があります。すべての単一のCSVファイルにはヘッダーがあり、2行目には必要のないテキストがあります。Import-Csv Select -kip

私は、ヘッダのための| 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を、使用することができます破ります。ヘッダー行を考慮するには、スキップする行番号を1つ増やします。

$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 
を試してみてください
関連する問題