$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)+
答案 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'