【发布时间】:2015-04-27 19:20:40
【问题描述】:
所以我有一个 CSV 文件,我需要对其进行一些操作,选择我需要的数据并导出到另一个 CSV 文件。
我的代码是:
$rawCSV = "C:\Files\raw.csv"
$outputCSV = "C:\Files\output.csv"
Import-Csv -Header @("a","b","c","d") -Path $rawCSV |
select -Skip 7 |
Where-Object { $_.b.length -gt 1 } |
ft b,a,c,d |
Out-File $outputCSV
所以这段代码使用 Import-Csv 命令允许我只选择我需要的列,按我想要的顺序添加一些标题,然后我只是将输出放入一个名为 $outputCSV 的 CSV 文件中。此输出文件的内容如下所示:
b a c d
- - - -
john smith 29 England
mary poopins 79 Walton
我不确定此输出中的分隔符是什么,而不是将这些列视为单独的列,而是将它们视为一列。我继续使用以下代码用逗号替换所有空格:
$b = foreach ($line in $a)
{
$fields = $line -split '`n'
foreach ($field in $fields)
{
$field -replace " +",","
}
}
这会产生一个如下所示的文件:
b,a,c,d
john,smith,29,England
mary,poppins,79,Walton
但这些仍然被视为一列,而不是我需要的四个单独的列。
* 更新 *
使用@给出的答案,我现在得到一个如下所示的文件:
【问题讨论】:
-
输出看起来像 csv 格式,你在哪个程序中查看说它是一列的输出?
-
如果我在 Excel 或 SQL 表中查看输出,它将显示为一列。
-
如果我保存您的示例输出并在 excel 中打开它,我会看到预期的 4 列
-
我知道。例如,如果我在写字板中打开文件,复制所有数据并粘贴到 excel 中,我会看到预期的四列。但是直接在Excel中打开文件,我看到一列...我认为这与
Import-Csv命令在处理过程中意外处理数据有关... -
您可以查看文件中是否有任何非打印字符可能会造成混淆 -windowsitpro.com/powershell/get-hex-dumps-files-powershell
标签: powershell csv