Gnuwin32 grep: saída de piping em cmd.exe ou Powershell

0

Estou tentando usar o comando Gnuwin32 grep para produzir uma lista de arquivos que gostaria de alimentar para outro comando (um script Perl, na verdade). Eu tenho um monte de arquivos HTML e gostaria de listar cada um deles que corresponda ao regexp itemprop=['"]description .

Agora, depois de alguns mexer, descobri que a chamada cmd.exe

grep -i -E -l "itemprop=['\"]description" path/to/files/*.htm

funciona bem, mas não posso canalizar sua saída para perl (ou qualquer outro comando):

grep -i -E -l "itemprop=['\"]description" path/to/files/*.htm | perl myscript.pl

imprime uma lista de arquivos no terminal, seguida por

grep: |: No such file or directory grep: perl: No such file or directory myscript.pl

trata de grep | e palavras subseqüentes como argumentos. Como evito isso?

Além disso, tentei superar o problema com o Powershell. Eu posso canalizar muito bem a partir daí (se eu usar uma expressão elementar, como "itemprop"), mas eu tenho problemas para especificar a expressão para procurar.

grep -i -E -l "itemprop=['\"]description" path/to/files/*.htm simplesmente não funciona. Powershell mostra-me um > > Eu nem sei o que significa (esperando mais informações)? Eu tentei todos os tipos de citações de escape, mas nenhum parece funcionar. Às vezes é o shell, às vezes é o grep que está reclamando por um [caractere incomparável.

Qualquer ajuda é muito apreciada.

    
por valerio 20.10.2015 / 21:14

1 resposta

0

Parece que você encontrou uma colisão sobre como as cotações são tratadas pelos diferentes analisadores envolvidos. A maneira mais simples de resolver esse caso é apenas para escapar da citação de fechamento da expressão de pesquisa grep

grep -iEl "itemprop=['\"]description^" path/to/files/*.htm | perl myscript.pl
    
por 21.10.2015 / 13:17