هل هناك PowerShell "لا يتضمن سلسلة" cmdlet أو syntax ؟
-
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 يحتوي على كامل الخطوط التي تريد استبعادها.
لا تنتمي إلى StackOverflow