如何删除Powershell中的第一行和最后一行

时间:2015-08-03 02:40:20

标签: powershell

此脚本将对csv文件进行一些处理,特别是删除第一行(How to export to "non-standard" CSV with Powershell之后):

loop {
    print("this does the same thing")
}

现在我需要通过删除最后一行来改进它。我试着添加:

  

选择-skip($ _。计数 - 1)

但它会产生异常。

那么正确的语法是什么?

2 个答案:

答案 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变量(长度等)进行一些检查,添加您的设置内容代码,它应该可以正常工作。