Arrays 删除与数组匹配的行

Arrays 删除与数组匹配的行,arrays,powershell,scripting,Arrays,Powershell,Scripting,我有一个满是行的文件,我想使用PowerShell删除与数组中字符串匹配的所有行: $stringsiDoNotWant = @("admin", "student") $content = gc file.txt 但是 不起作用:变量$content中仍有“admin”和“student”请尝试以下操作: (Get-Content file.txt) | Where {$_ -notmatch 'admin|student'} | Out-File somefile.txt 或 试试这个

我有一个满是行的文件,我想使用PowerShell删除与数组中字符串匹配的所有行:

$stringsiDoNotWant = @("admin", "student")

$content = gc file.txt
但是

不起作用:变量
$content

中仍有“admin”和“student”请尝试以下操作:

(Get-Content file.txt) | Where {$_ -notmatch 'admin|student'} | Out-File somefile.txt

试试这个:

(Get-Content file.txt) | Where {$_ -notmatch 'admin|student'} | Out-File somefile.txt


Jeremy:如果您的字符串数组发生了变化,或者其中有很多项或类似的内容,您可以从如下字符串数组中构建匹配的字符串:
$RegExFilter=($stringsiDoNotWant |%{[regex]::Escape($|)})-加入“
”$-notmatch”($RegExFilter)”$content=$content |其中{$\不匹配“管理员|学生”}非常好,谢谢!我知道我们不能给-notmatch提供数组?不,不能在右边。那必须是一个正则表达式。你可以在左边提供一个数组,例如
'ab','bc','cd'-notmatch'a'
。Jeremy:如果你的字符串数组发生了变化,或者其中有很多项或类似的内容,你可以构建字符串从如下字符串数组中匹配:
$RegExFilter=($stringsiDoNotWant |%{[regex]::Escape($|)})-加入“|”
,然后只需执行
$-notmatch”($RegExFilter)
$content=$content |其中{$-notmatch'admin | student}非常好,谢谢!我知道我们不能给-notmatch提供数组?不,不能在右边。那必须是正则表达式。你可以在左边提供数组,例如
'ab','bc','cd'-notmatch'a'
$content = Get-Content file.txt
$content = $content | Where {$_ -notmatch 'admin|student'}