Powershell 2 congelando em Select-String “. * _. * = - 1”

1

isso pode parecer um Q estúpido, mas eu tenho problema de PS: como o título diz, eu tento algo como:

 $all = gci D:\work\
 $all | Select-String ".*_.*=-1"

(estou procurando a opção de configuração que tenha valor -1 e _ no nome) O problema é que o PS congela, também não termina em tempo razoável, ctrl + c não funciona. Ofc você poderia dizer que os dados são apenas muito para processar, mas o problema é que grep leva como 1-2 segundos na mesma pasta e mesmo regex.

O comando grep é (originalmente ele não tinha -r, mas eu adicionei depois de alguns comentários, o grep ainda é rápido, mas demora 20-30 segundos)

grep ".*_.*=-1" -r D:\work\*

EDITAR:

$all  | ForEach-Object {echo $_.Name;  $_|Select-String ".*_.*=-1"      }

mostra nomes de arquivos lentamente ... Eu acho que o problema é que a velocidade Regex no PS é patética ...

    
por NoSenseEtAl 19.10.2012 / 14:19

1 resposta

1

Específico:
Tente refazer um regex para

 [^_]*_[^=]*=-1

versão grep equivalente:

grep -P '[^_]*_[^=]*=-1'

Geral:
As implementações de regex são diferentes, então essa é a razão para o comportamento diferente. Eu não sei os detalhes da implementação do regex do powershell, então não sei o motivo exato.

    
por 19.10.2012 / 14:26