Use o grep no Ubuntu em uma VM do VirtualBox e acesse o host do Windows usando o recurso Shared Folders do VirtualBox. Este não é o primeiro bug que eu encontrei no grep do GNUWin32.
Estou tentando usar várias strings em vários arquivos. Isso é no Windows 7 x64, e estou usando o sabor do GNUWin32 .
Eu tenho o grep.bat com este comando:
grep "string1\|string2\|string3\|string4" 20*.csv > out.csv
Na verdade, há 68 strings e são 11 caracteres cada, portanto, a string entre as aspas tem 869 caracteres (isso inclui os delimitadores de 2 caracteres).
O que está acontecendo é que estou obtendo um out.csv , mas tudo o que ele está fazendo é alternar entre 0 bytes e uma cópia do meu comando grep! Hã? Por que o grep está pesquisando um arquivo .bat quando eu explicitamente disse para verificar apenas arquivos que correspondem a 20 * .csv ?
Se eu remover > out.csv
e executar o .bat novamente, tudo que eu obtenho é minha linha de comando repetida várias vezes em uma janela de prompt de comando.
Isso funciona no meu grep, deve funcionar em qualquer plataforma. O que você quer fazer é ler os padrões de um arquivo. Aqui está um exemplo (observe o '-f-', isto é, leia os padrões da entrada padrão (-):
$ man grep > grep.txt
$ man cat > cat.txt
$ cat > patterns
terminfo
full
should
(pressione Ctrl + D aqui)
$ cat patterns | grep -f- *.test
cat.test: The full documentation for cat is maintained as a Texinfo manual. If
cat.test: should give you access to the complete manual.
grep.test: This version number should be included in all bug reports (see
grep.test: should avoid both -q and -s and should redirect standard and
grep.test: implementations support \{ instead, so portable scripts should avoid {
grep.test: in grep -E patterns and should use [{] to match a literal {.
grep.test: portable scripts should avoid it.
grep.test: terminfo capability does not apply, when the chosen
grep.test: file name wildcard expansion and therefore should not be treated
grep.test: pcrepattern(3), terminfo(5), glob(7), regex(7).
grep.test: The full documentation for grep is maintained as a TeXinfo manual. If
grep.test: should give you access to the complete manual.
Tags grep windows-7 batch-file gnuwin32