web-dev-qa-db-fra.com

Existe-t-il une applet de commande ou une syntaxe PowerShell «ne contient pas»?

Dans PowerShell, je lis dans un fichier texte. Je fais ensuite un Foreach-Object sur le fichier texte et je ne suis intéressé que par les lignes qui ne contiennent PAS de chaînes qui sont dans $arrayOfStringsNotInterestedIn.

Quelle est la syntaxe pour cela?

   Get-Content $filename | Foreach-Object {$_}
27
Guy

Si $ arrayofStringsNotInterestedIn est un [tableau], vous devez utiliser -notcontains:

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

ou mieux (OMI)

Get-Content $FileName | where { $arrayofStringsNotInterestedIn -notcontains $_}
42
Chris Bilson

Vous pouvez utiliser l'opérateur -notmatch pour obtenir les lignes qui n'ont pas les caractères qui vous intéressent.

     Get-Content $FileName | foreach-object { 
     if ($_ -notmatch $arrayofStringsNotInterestedIn) { $) }
10
Mark Schill

Pour exclure les lignes qui contiennent l'une des chaînes de $ arrayOfStringsNotInterestedIn, vous devez utiliser:

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

Le code proposé par Chris ne fonctionne que si $ arrayofStringsNotInterestedIn contient les lignes complètes que vous souhaitez exclure.

1
Bruno Gomes