Powershell select-object跳过多行?

时间:2010-04-06 13:33:26

标签: powershell

我可以使用-skip选项跳过多行吗?

gc d:\testfile.txt | select -skip 3

但如果我想删除第3-7行

该怎么办

5 个答案:

答案 0 :(得分:20)

您还可以使用readcount属性排除行:

get-content d:\testfile.txt | where {$_.readcount -lt 3 -or $_.readcount -gt 7}

答案 1 :(得分:8)

如果我只需要选择一些行,我会直接索引到数组:

$x = gc c:\test.txt
$x[(0..2) + (8..($x.Length-1))]

也可以创建一个函数Skip-Objects

function Skip-Object {
    param(
        [Parameter(Mandatory=$true,ValueFromPipeline=$true)][PsObject]$InputObject,
        [Parameter(Mandatory=$true)][int]$From,
        [Parameter(Mandatory=$true)][int]$To
    )

    begin {
        $i = -1
    }
    process {
        $i++
        if ($i -lt $from -or $i -gt $to)  {
            $InputObject
        }
    }
}

1..6 | skip-object -from 1 -to 2   #returns 1,4,5,6
'a','b','c','d','e' | skip-object -from 1 -to 2 #returns a, d, e

答案 2 :(得分:4)

PowerShell Community Extensions附带一个Skip-Object cmdlet:

PS> 0..10 | Skip-Object -Index (3..7)
0
1
2
8
9
10

请注意,Index参数是从0开始的。

答案 3 :(得分:2)

同样,没有扩展名(注意-skip需要跳过的项目数,而不是索引)

$content = get-content d:\testfile.txt
($content | select -first 3), ($content | select -skip 8)

答案 4 :(得分:0)

我不知道为什么,但是它可以工作。

1..9 | Select-Object -Skip 2 -First 1

-First = Take()