Arrays 删除与数组匹配的行
我有一个满是行的文件,我想使用PowerShell删除与数组中字符串匹配的所有行: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 或 试试这个
$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'}