Powershell 输出文件并保留格式
这是我第一次使用powershell,我有一个包含25个变量的大型csv文件。我想使用一个变量(indust)进行过滤,并保留原始文件的格式。我试过下面的两个命令Powershell 输出文件并保留格式,powershell,where-clause,Powershell,Where Clause,这是我第一次使用powershell,我有一个包含25个变量的大型csv文件。我想使用一个变量(indust)进行过滤,并保留原始文件的格式。我试过下面的两个命令 Get-Content 'C:\week1_industry.csv' | Select-String "Tech" |Out-File 'C:\new\week1_filtered.csv' 此命令返回输出文件,其中包含不属于技术行业但包含“tech”一词的观察结果,变量全部分组在一起,但分成四行,而不是原始
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'
此命令不返回任何结果。正如所指出的,使用此命令将CSV文件解析为([pscustomobject]
)对象是有意义的,它允许您按特定属性(CSV列)的值进行筛选:
注:
- 如果您使用的是PowerShell Core(v6+),
是不必要的,并且假设您要创建UTF-8编码的文件,-NoTypeInformation
-Encoding Utf8也不是;不幸的是,Windows PowerShell(v5.1之前的版本)默认为ASCII(!)编码
- 默认为双引号引用所有字段值-在Windows PowerShell中始终如此,但您可以在PowerShell[Core,v6+]中进行选择-请参阅
获取内容
与输出文件
混用的可能性将扰乱编码。请出示文件摘录,清楚地指出你想要完成的任务其中indust-eq“Tech”
希望有一个名为indust
的属性。从Get Content
读取不会产生这样的属性。如果您的文件确实是CSV,那么使用Import CSV
读取可能会更有益。如果有一个名为indust
的列标题,您可以使用where
根据该名称进行筛选。如果行数据包含更长的字符串,则在筛选-->时最好使用-like
运算符,其中indust-like“*Tech*”
。
Import-Csv C:\week1_industry.csv |
Where-Object indust -like *tech* |
Export-Csv -NoTypeInformation -Encoding Utf8 C:\new\week1_filtered.csv