Как включить несколько элементов несоответствия в PowerShell Get-Content - PullRequest
0 голосов
/ 14 мая 2019
$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 Как я могу добавить несколько не совпадающих элементов, чтобы удалить только одну строку? С синтаксисом я перепутал около 30 минут и не могу понять, конечно, все просто.

Бонусные баллы, могу ли я сделать несоответствие с регулярным выражением? что-то вроде (... 555555555555) +

Ответы [ 2 ]

2 голосов
/ 14 мая 2019

Это регулярное выражение. Таким образом, вы должны экранировать (используя обратную косую черту) '^'.

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 голос
/ 14 мая 2019

Я думаю, что то, что вы ищете, выглядит примерно так: $removeLines = (Get-Content $path) -notmatch "$acct\^\d+" | Set-Content $saveAs

Вы не можете цеплять -и.Вам нужно сделать что-то вроде $x -notmatch 'a' -and $x -notmatch 'b'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...