Powershell select-object пропускает несколько строк? Можно ли пропустить несколько строк с помощью опции -skip? gc d:\testfile.txt | select -skip 3 работает, но что делать, если я хочу удалить строку 3-7?? Ответ 1 Вы также можете использовать свойство readcount для исключения строк: get-content d:\testfile.txt | where {$_.readcount -lt 3 -or $_.readcount -gt 7} Ответ 2 Если мне нужно выбрать только некоторые строки, я бы сразу проиндексировал в массив: $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 Ответ 3 Расширения сообщества PowerShell поставляется с командлетом Skip-Object: PS> 0..10 | Skip-Object -Index (3..7) 0 1 2 8 9 10 Обратите внимание, что параметр Index имеет значение 0. Ответ 4 Аналогично, без расширений (обратите внимание, что -skip требуется количество пропущенных элементов, а не индекс) $content = get-content d:\testfile.txt ($content | select -first 3), ($content | select -skip 8) Ответ 5 Я не знаю почему, но это может сработать. 1..9 | Select-Object -Skip 2 -First 1 -First = Take()
Ответ 1 Вы также можете использовать свойство readcount для исключения строк: get-content d:\testfile.txt | where {$_.readcount -lt 3 -or $_.readcount -gt 7}
Ответ 2 Если мне нужно выбрать только некоторые строки, я бы сразу проиндексировал в массив: $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
Ответ 3 Расширения сообщества PowerShell поставляется с командлетом Skip-Object: PS> 0..10 | Skip-Object -Index (3..7) 0 1 2 8 9 10 Обратите внимание, что параметр Index имеет значение 0.
Ответ 4 Аналогично, без расширений (обратите внимание, что -skip требуется количество пропущенных элементов, а не индекс) $content = get-content d:\testfile.txt ($content | select -first 3), ($content | select -skip 8)
Ответ 5 Я не знаю почему, но это может сработать. 1..9 | Select-Object -Skip 2 -First 1 -First = Take()