我前段时间开始使用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作为第一列
感谢任何帮助,谢谢!
答案 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