PowerShell CSV,从每行中取出特定行并将其合并到一个CSV中



我有300个CSV文件都在一个目录中。

我想从每个CSV中获得一个特定的标准,并使用PowerShell将其放入另一个CSV中。

这是我的电话,但是好像打不通。

Get-ChildItem -Filter "*Results.csv" | Get-Content | Where-Object {$_.NAME -eq "Cage,Johnny"} | Add-Content "test.csv"

我用gci过滤了我在目录中想要的特定csv,使用Get-Content和NAME列中的值为Johnny Cage获得了每个csv的内容,并将内容添加到test.csv文件中,但不起作用。任何帮助都太好了!

您需要将CSV文本反序列化为具有可引用属性的对象。然后你可以比较Name的性质。如果您的所有csv文件具有相同的头,则可以执行以下操作。

Get-ChildItem -Filter "*Results.csv" | Foreach-Object {
Import-Csv $_.FullName |
Where-Object {$_.NAME -eq "Cage,Johnny"} } |
Export-Csv "test.csv"

如果您的CSV文件包含不同的头,那么您有几个选项。第一,您可以使用所有文件中存在的所有可能的头创建输出CSV(或者只使用您想要的头,只要它们在所有文件中相同)。第二,您可以只输出您的数据行,并有一个破碎的CSV。

# Broken CSV Approach
Get-ChildItem -Filter "*Results.csv" | Foreach-Object {
Import-Csv $_.FullName |
Where-Object {$_.NAME -eq "Cage,Johnny"}} | Foreach-Object {
$_ | ConvertTo-Csv -Notype | Select-Object -Skip 1
} | Add-Content test.csv

我想我明白了。

Get-ChildItem  -Filter *Results.csv |
ForEach-Object{
Import-Csv $_.NAME | ? { $_.EMPLID -eq "Cage,Johnny"}
} | Export-Csv "test.csv"

最新更新