此脚本将对csv文件进行一些处理,特别是删除第一行(How to export to "non-standard" CSV with Powershell之后):
loop {
print("this does the same thing")
}
现在我需要通过删除最后一行来改进它。我试着添加:
选择-skip($ _。计数 - 1)
但它会产生异常。
那么正确的语法是什么?
答案 0 :(得分:5)
根据您拥有的PowerShell版本,您可以使用-SkipLast
参数,例如:
... | Select -Skip 1 | Select -SkipLast 1
SkipLast
适用于PowerShell 5.0及更高版本。
如果您没有该参数,可以通过Microsoft网站进行安装。 Windows 7是最早可以运行PowerShell 5的操作系统版本。
如果无法做到,请使用:
$csv = Import-Csv in.csv -header Date,Time,O,H,L,C,V | `
Select * -ExcludeProperty time | `
Foreach {$_.date = [datetime]::ParseExact($_.date,"yyyy.MM.dd",$null).tostring("yyMMdd");$_.v=1;$_} | `
ConvertTo-Csv -NoTypeInformation
for ($i = 1; $i -lt ($csv.Length - 1); $i++) {
$csv[$i] -replace '"' | Add-Content out.csv -encoding ascii
}
答案 1 :(得分:1)
如果你不能运行-SkipLast,因为你没有Powershell 5,而不是使用for循环,我建议使用它:
$csv[1..$($csv.Count - 2)]
这样,您将跳过第一行和最后一行。然后,您必须对$ csv变量(长度等)进行一些检查,添加您的设置内容代码,它应该可以正常工作。