Import-Csv Select -Skip

时间:2017-01-23 15:27:19

标签: powershell csv skip import-csv

我有多个需要合并为一个的CSV文件。在每个CSV文件中都有一个标题,在第二行中有一些我不需要的文本。

我注意到标题的| 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

3 个答案:

答案 0 :(得分: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中的记录没有嵌套换行符,您也可以使用Get-Content / Set-Content,这可能比Import-Csv / {{{{}}快一点1}}(由于解析开销较少)。将要跳过的行号增加一,以考虑标题行。

Export-Csv

答案 1 :(得分:0)

试试这个

{{1}}

答案 2 :(得分:0)

如果您在所有用户情况下都跳过所有行,只需使用-skip 3。

Get-Content -Path 'D:\Temp\UserRecord.csv'
# Results
<#
Name     Codes
------- ---------
John    AJFKC,EFUY
Ben    EFOID, EIUF
Alex    OIPORE, OUOIJE
#>


# Return all text after row the Header and row 3
(Get-Content -Path 'D:\Temp\UserRecord.csv') | 
Select -Skip 3

# Results
<#
Ben    EFOID, EIUF
Alex    OIPORE, OUOIJE
#>

另请参阅:

Parsing Text with PowerShell (1/3)