【发布时间】:2020-07-01 21:10:31
【问题描述】:
这是我第一次使用 powershell,我有一个包含 25 个变量的大型 csv 文件。我想使用一个变量(indust)进行过滤并保留原始文件的格式。我尝试了以下两个命令;
Get-Content 'C:\week1_industry.csv' | Select-String "Tech" |Out-File 'C:\new\week1_filtered.csv'
此命令返回输出文件,包括不属于科技行业但包含单词“tech”的观察结果,变量全部组合在一起但分成四行,而不是原始文件中的 25 个不同变量
Get-Content 'C:\week1_industry.csv' | where indust -eq "Tech" |Out-File 'C:\new\week1_filtered.csv'
此命令不返回任何结果
【问题讨论】:
-
Get-Content与Out-File的混合可能会导致编码混乱,除非您使用的是 PowerShell Core。请显示文件的摘录,以清楚地指出您想要完成的任务。where indust -eq "Tech"期望有一个名为indust的属性。从Get-Content读取不会产生这样的属性。 -
如果您的文件是真正的 CSV,使用
Import-Csv阅读可能更有益。如果有一个名为indust的列标题,您可以使用where基于该名称进行过滤。如果你的行数据包含较长的字符串,过滤时最好使用-like操作符 -->where indust -like "*Tech*"。