powershell - 输出文件并保留格式
问题描述
这是我第一次使用 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'
此命令不返回任何结果
解决方案
正如AdminOfThingsImport-Csv
指出的那样,将 CSV 文件解析为 ( [pscustomobject]
)对象是有意义的,它允许您按特定属性(CSV 列)的值进行过滤:
Import-Csv C:\week1_industry.csv |
Where-Object indust -like *tech* |
Export-Csv -NoTypeInformation -Encoding Utf8 C:\new\week1_filtered.csv
笔记:
如果您使用的是 PowerShell Core (v6+),
-NoTypeInformation
则不需要,并且 - 假设您要创建 UTF-8 编码文件 - 也不需要-Encoding Utf8
;不幸的是, Windows PowerShell(最高 v5.1 的版本)默认为 ASCII(!) 编码。Export-Csv
默认情况下对所有字段值进行双引号- 在 Windows PowerShell 中总是如此,但您可以在PowerShell [Core, v6+]中选择- 请参阅此答案。
推荐阅读
- reactjs - GraphQL 突变:不变违规:必须包含查询定义
- dart - (Flutter) 如何撤消计算器中的算术运算
- r - 识别 R 中值为 0 的行
- networking - Kubernetes:无法访问后端:读取 udp 10.200.0.9:46159->183.60.83.19:53:i/o 超时
- python - 如何让 IDEA/PyCharm 正确对待 @tf_export?
- r - 在多重 glm 泊松回归中绘制置信区间 (IC)
- php - Nginx 默认 / URI 上的 Laravel 不起作用 - 需要“index.php” - Nginx 配置问题?
- c++ - Qt解析对象数组JSON
- ruby-on-rails - 如何在 vue 组件中附加 <%= %> 和登录表单(设计)
- c# - 从 ComponentOne RichTextBox 将 RTF 转换为 HTML?