通过过滤合并CSV文件

时间:2015-11-10 12:37:18

标签: csv powershell

我前段时间开始使用PowerShell,以便过滤我的一台服务器正在创建的日志。

单个日志是文本文件中的CSV,其中第一行是有关创建它的过程的一些信息。标题是在第二行,实际的东西在3日。大约有15处房产,但我只需要几处房产。

这对我来说在一个档案中完美无缺:

Import-csv file.txt | Select-Object -Skip 1 -Property prop1, prop2, prop3, prop4, prop5 | Export-csv result.csv -NoTypeInformation

但是,无论我试图用于多个文件(比方说,所有文件夹中的所有.txt文件,因为日志是每天创建的,并且分组在文件夹中),它对我不起作用,我怀疑这是因为第一行不同,我尝试跳过同样的方式,但我得到空的合并CSV文件,只有prop1作为第一列

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:3)

如果标题实际上在第二行,而不是第一行,那么你应该做

Get-Content file.txt | Select-Object -Skip 1 | ConvertFrom-Csv | Export-Csv result.csv -NoTypeInformation

因为这会在解析为CSV之前剥离第一行。

如果要以相同的方式合并多个文件,可以这样做:

Get-ChildItem *.txt | ForEach-Object {
    Get-Content $_ | Select-Object -Skip 1 | ConvertFrom-Csv
} | Export-Csv result.csv -NoTypeInformation