如何在Powershell Get-Content中包含多个-notmatch项目

时间:2019-05-13 21:01:07

标签: powershell

$removeLines = (Get-Content $path) -notmatch '$acct' -and '06`^' | Set-Content $saveAs

我有一个看起来像这样的文件。

01^333333333333
03^333333333333
06^333333333333
01^555555555555
02^555555555555
02^555555555555
02^555555555555
03^555555555555
06^555555555555

我正在尝试获取文件的内容并像这样输出:(没有以06 ^开头的行,后面是555555555555

01^333333333333
03^333333333333
06^333333333333
01^555555555555
02^555555555555
02^555555555555
02^555555555555
03^555555555555

因此,应删除此行06^555555555555 如何添加多个-notmatch项,以便仅删除一行?我已经将语法弄乱了大约30分钟,无法弄清楚,肯定很简单。

加分,我可以与正则表达式不匹配吗?类似于(... 555555555555)+

2 个答案:

答案 0 :(得分:2)

是正则表达式。因此,您必须使用反斜杠转义'^'。

get-content $path | where { -not ($_ -match $acct -and $_ -match '06\^') }

get-content $path | where { $_ -notmatch $acct -or $_ -notmatch '06\^' }

(Get-Content $path) -notmatch "^06\^$acct"

答案 1 :(得分:1)

我认为您要查找的内容如下:$removeLines = (Get-Content $path) -notmatch "$acct\^\d+" | Set-Content $saveAs

您不能链接-ands。您需要执行类似$x -notmatch 'a' -and $x -notmatch 'b'

的操作