2010-04-06 11 views
16

क्या मैं -स्किप विकल्प के साथ कई लाइनों को छोड़ सकता हूं?पावरहेल चयन-ऑब्जेक्ट एकाधिक लाइनों को छोड़ दें?

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

काम करता है लेकिन अगर मैं लाइन 3-7 को हटाना चाहता हूं तो क्या करना है ??

उत्तर

20

तुम भी लाइनों को बाहर करने के readcount संपत्ति का उपयोग कर सकते हैं:,

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

मैं केवल कुछ लाइनों का चयन करने के लिए की जरूरत है, मैं करूंगा सीधे सरणी में सूचकांक:

$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 
4

PowerShell Community Extensions एक छोड़ें के साथ आता है बनाने के लिए - ऑब्जेक्ट cmdlet:

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

ध्यान दें कि इंडेक्स पैराम टेर 0-आधारित है।

2

इसी एक्सटेंशन के बिना (ध्यान दें कि -skip छोड़ मदों की संख्या की जरूरत है, और नहीं एक सूचकांक)

$content = get-content d:\testfile.txt 
($content | select -first 3), ($content | select -skip 8) 
संबंधित मुद्दे