2008-09-16 17 views
23

पावरहेल में मैं एक टेक्स्ट फ़ाइल में पढ़ रहा हूं। मैं फिर टेक्स्ट फ़ाइल पर एक फोरच-ऑब्जेक्ट कर रहा हूं और केवल उन पंक्तियों में रूचि रखता हूं जिनमें स्ट्रिंग्स नहीं हैं जो $ arrayOfStringsNotInterestedInक्या कोई पावरहेल "स्ट्रिंग में" cmdlet या वाक्यविन्यास नहीं है?

क्या कोई इस के लिए वाक्यविन्यास जानता है?

Get-Content $filename | Foreach-Object {$_} 
+0

आप शायद अपने सरणी में प्रत्येक स्ट्रिंग के संयोजन के साथ * -notmatch * या * -notlike * का उपयोग कर सकते हैं। –

उत्तर

35

हैं $ arrayofStringsNotInterestedIn एक [सरणी] क्या आप -notcontains का उपयोग करना चाहिए है :

Get-Content $FileName | foreach-object { ` 
    if ($arrayofStringsNotInterestedIn -notcontains $_) { $) } 

या बेहतर (IMO)

Get-Content $FileName | where { $arrayofStringsNotInterestedIn -notcontains $_} 
10

आप -notmatch ऑपरेटर का उपयोग कर सकते हैं लाइनों वे वर्ण जो आप में रुचि रखते हैं की जरूरत नहीं है कि प्राप्त करने के लिए।

 Get-Content $FileName | foreach-object { 
    if ($_ -notmatch $arrayofStringsNotInterestedIn) { $) } 
+0

http://technet.microsoft.com/en-us/magazine/cc137764.aspx –

+0

क्या किसी ने भी यह कोशिश की है? जब मैं इसे आज़माता हूं तो वाक्यविन्यास गलत है और यह फ़ाइल में प्रत्येक पंक्ति देता है। – OwenP

+3

-अबॉटमैच नहीं। धन्यवाद, एक स्ट्रिंग में स्ट्रिंग के लिए -notcontains से बेहतर काम करता है – Brent

1

लाइनों है कि $ arrayOfStringsNotInterestedIn में तार में से कुछ भी निकालने के लिए आपको उपयोग करना चाहिए:

(Get-Content $FileName) -notmatch [String]::Join('|',$arrayofStringsNotInterestedIn) 

कोड क्रिस द्वारा प्रस्तावित तभी काम करता है $ arrayofStringsNotInterestedIn पूर्ण लाइनों आप छोड़ना चाहते हैं शामिल हैं।

संबंधित मुद्दे