【发布时间】:2016-09-28 19:42:35
【问题描述】:
我是 PowerShell 新手,一直在尝试遍历 CSV 文件并返回每行的列数。将该列数与第一行进行比较,并发生不相等的事情。在这种情况下,将逗号替换为空。然后创建一个包含更改的新文件。
$csvColumnCount = (import-csv "a CSV file" | get-member -type NoteProperty).count
$CurrentFile = Get-Content "a CSV file" |
ForEach-Object { $CurrentLineCount = import-csv "a CSV file" | get-member -type NoteProperty).count
$Line = $_
if ($csvColumnCount -ne $CurrentLineCount)
{ $Line -Replace "," , "" }
else
{ $Line } ;
$CurrentLineCount++} |
Set-Content ($CurrentFile+".out")
Copy-Item ($CurrentFile+".out") $ReplaceCSVFile
【问题讨论】:
-
那么什么不起作用?
-
我认为它没有正确计算每行的列数。我正在使用的测试 CSV 文件有几行少于标题行列。该脚本正在删除整个文件中的逗号。
-
您想测试一行中的任何属性是否为空或缺失?然后改变那些行?
-
抱歉,不确定您所说的属性是什么意思。我只想测试列数。即如果文件中的第一行有 8 列(标题行)并且第 10 行只有 9 列,我只想更改第 10 行。
-
您想要达到的目标对我来说并不明显。似乎目的是检测其上值不足的行。然后这些行删除所有逗号,有效地将它们变成单值行。生成的文件将是“好”行和具有单个值的行的混合。这真的是你想要的吗?
标签: csv powershell