如何在使用Powershell对文件内容排序时跳过某些行?

如何在使用Powershell对文件内容排序时跳过某些行?,powershell,Powershell,我编写了以下脚本,根据某个列对文件内容进行排序 $lines = Get-Content $inputFile foreach($line in $lines){ if($line.startsWith('*') -or $line.startsWith('-')){ continue } if(($line -eq $lines[0]) -or ($line -eq $lines[1]) -or ($line -eq $lines[2])){

我编写了以下脚本,根据某个列对文件内容进行排序

$lines = Get-Content $inputFile

foreach($line in $lines){
    if($line.startsWith('*') -or $line.startsWith('-')){
        continue
    }
    if(($line -eq $lines[0])  -or ($line -eq $lines[1]) -or ($line -eq $lines[2])){
        Sort-Object { $line.Substring(70,9) } | set-content $outputFile
    }
}
输入文件内容:

 ...header row...
 ...header row...
 ...header row...
        4
        2
        1
 ....trailor.....
期望输出:

 ...header row...
 ...header row...
 ...header row...
        1
        2
        3
 ....trailor.....

在我的输入文件中,前三行作为头行,Lat行作为尾行。我想在排序时跳过这些行。我试着使用上面的脚本。但这并不是在跳过那些台词。有人能帮我纠正一下吗?

如果你总是想跳过前三行和最后一行,你也可以采用你的foreach循环:

foreach ($line in $lines[3 .. ($lines.Count -2)])
{
    Write-Host $line
}
您的
foreach
循环现在将从第四个元素开始,一直运行到最后一行之前的那一行

编辑: 下面是一个示例解决方案,其中我创建了一个新数组,并使用cmdlet(别名sort)对特定行进行排序,最后使用cmdlet设置新内容:


嗨,谢谢你的回复!你能用Sort Objet命令吗?因为在我的情况下,alos我跳过了,但它不工作。所以我想试试你的命令,你必须跟我们分享一个例子,告诉我们想要的输出。否则,我无法帮助您。是的,我添加了一个2行解决方案,完全满足您的需要。欢迎您。我从编辑中删除了
$line.Substring
,因为这在这里不起作用。
$lines = Get-Content $inputFile
@($lines[0 .. 2], ($lines[3 .. ($lines.Count -2)] | Sort-Object -Descending), $lines[-1]) | Set-Content $outputFile