O que o grep faz ao usar um cifrão no termo de pesquisa?

3

Eu queria encontrar a variável $featuredicon em meus arquivos php e executei grep -ir "$featuredicon"

Eu entendi que o cifrão é um personagem reservado no shell. Mas o que isso realmente faz? Eu modifiquei meus arquivos php? Eu tenho medo de ter feito algo ruim ...

da próxima vez eu vou correr grep -ir "\$featuredicon"

    
por Der Hochstapler 23.07.2012 / 21:03

2 respostas

4

A razão pela qual cada linha de cada arquivo foi listada foi devido à substituição de variáveis do seu shell.

Quando você liga

grep -ir "$featuredicon" *

bash avaliará isso. Ele procurará a variável $featuredicon e a colocará em seu comando. Adivinhe qual é o $featuredicon mais provável?

Certo, nada. Então o que você está realmente fazendo é:

grep -ir "" *

E isso corresponde a todas as linhas de todos os arquivos.

Resposta antiga

O cifrão ( $ ) é um marcador para end-of-line na expressão regular (suponho que o mesmo seja verdadeiro para o grep).

Se você quiser procurar por um cifrão, use '\$' .

Certifique-se de verificar a pergunta do StackOverflow: Como grep para o símbolo do dólar ($)?

    
por 23.07.2012 / 21:15
1

grep não pode modificar arquivos por conta própria; não causou danos.

    
por 23.07.2012 / 21:07

Tags