我有一个csv文件,其中有多行。我只想让NumInventaire(其中一列)的字符长度严格等于6的行。
以下是数据行的示例:
Avis,NumInventaire,OS,Statut,Client
123456,LM-001,78954,In Progress,M. Dupont
89541,PLATEAU 58 RELEASE,892156,To do,M. Durand
99962,BU-564,223621,Done,M. Martin
96654,ZONE GRILLAGE,75546,Done,M. Michel
56456,P45 RELEASE,75445,To Do, M. Marsan
74654,JH-654,78545,In Progress, M. Blanc
我现在有这行代码:
Import-Csv "$treatmentfolder\data.csv" | where {$_.NumInventaire.length -eq 6} | Export-Csv -Path "$treatmentfolder\new.csv" -notypeinfo
它适用于那里的数据,但我的数据文件有1000行和28列。只保留一行。我如何获得所有行?
答案 0 :(得分:0)
要获得净长度,我建议在您的命令中插入.Trim("'")
和/或.Trim('"')
。
Import-Csv "$treatmentfolder\data.csv" |
where {$_.NumInventaire.Trim('"').Trim("'").length -eq 6} |
Export-Csv -Path "$treatmentfolder\new.csv" -notypeinfo
您还可以反击检查将文件视为文本:
gc "$treatmentfolder\data.csv" | where {$_.Split(',')[1].Trim('"').Trim("'").Length -eq 6}
答案 1 :(得分:0)
确实你找到了正确的方法,问题是你错过了一个参数。
Import-Csv "$treatmentfolder\data.csv" |`
where {$_.NumInventaire.length -eq 6} |`
Export-Csv -Path "$treatmentfolder\new.csv" -notypeinfo -Append
有一点我不确定:您可能会重复标题,如果是,请尝试Get-Content
和Add-Content
。
试一试,让我们知道它是否有效。 :)