2008-09-16 26 views
23

Powershell'de bir metin dosyasında okuyorum. Daha sonra bir metin dosyası üzerinde bir Foreach-Object yapıyorum ve yalnızca $ arrayOfStringsNotInterestedInBir Powershell "dizesi içermiyor" cmdlet'i veya sözdizimi var mı?

olan dizeleri içermeyen satırlarla ilgileniyorum Bunun için sözdizimi bilen var mı?

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

Dizinizde her dizeyle birlikte * -notmatch * veya * -notlike * kullanabilirsiniz. –

cevap

35

$ arrayofStringsNotInterestedIn bir [dizi] Eğer -notcontains kullanmalıdır ise :

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

ya da daha iyisi (IMO)

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

Sen ilgilenen karakterler yoksa satırları almak için -notmatch operatörünü kullanabilirsiniz.

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

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

+0

Bunu deneyen var mı? Denediğimde sözdizimi yanlıştır ve dosyadaki her satırı döndürür. – OwenP

+3

-notmatch şimdi. Teşekkürler, bir dizede dize için not almayan daha iyi çalışır – Brent

1

$ arrayOfStringsNotInterestedIn içinde dizeleri herhangi birini içeren satırları hariç tutmak için, kullanmalısınız: $ arrayofStringsNotInterestedIn dışlamak istediğiniz tam çizgiler içeriyorsa Chris önerdiği

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

kodu yalnızca çalışır.

İlgili konular