هل هناك PowerShell "لا يتضمن سلسلة" cmdlet أو syntax ؟

StackOverflow https://stackoverflow.com/questions/74957

  •  09-06-2019
  •  | 
  •  

سؤال

في PowerShell أنا أقرأ في ملف نصي.أنا ثم القيام Foreach وجوه أكثر من ملف النص وأنا مهتم فقط الخطوط التي لا تحتوي على السلاسل التي هي في $arrayOfStringsNotInterestedIn.

ما هي الجملة من أجل هذا ؟

   Get-Content $filename | Foreach-Object {$_}
هل كانت مفيدة؟

المحلول

إذا $arrayofStringsNotInterestedIn هو [مجموعة] يجب استخدام -notcontains:

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

أو أفضل (IMO)

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

نصائح أخرى

يمكنك استخدام-notmatch المشغل للحصول على الخطوط التي لا تملك حرفا كنت مهتما في.

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

استبعاد الخطوط التي تحتوي على أي من السلاسل في $arrayOfStringsNotInterestedIn, يجب استخدام:

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

القانون المقترح من قبل كريس يعمل فقط إذا كان $arrayofStringsNotInterestedIn يحتوي على كامل الخطوط التي تريد استبعادها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top