Como eu combino uma string com símbolos em uma forma de grep? [duplicado]

0

Eu tenho um arquivo com este conteúdo (ou similar):

# cat /var/www/htpasswd
foo:$apr1$73wJ8tiQ$HdaRYe2pUMqBf0ZpMJz6h/

e estou tentando verificar a presença de uma entrada nela, combinando-a assim:

# grep --fixed-string "foo:$apr1$73wJ8tiQ$HdaRYe2pUMqBf0ZpMJz6h/" /var/www/htpasswd
#

mas não está combinando nada. Alguma idéia por que e / ou como fazer isso?

Primeiro, pensei que fosse o cifrão, mas este funciona:

# grep --fixed-string "foo:$ap" /var/www/htpasswd
foo:$apr1$73wJ8tiQ$HdaRYe2pUMqBf0ZpMJz6h/
#
    
por pupeno 10.06.2014 / 18:54

3 respostas

2

Use aspas simples (') para que $ nnn não seja tratado como uma variável. Strings com "são strings interpoladas, com 'nenhuma interpolação acontece.

Heck apenas olhe para a saída quando você prefácio aquela corda com eco.

$ echo "foo:$apr1$73wJ8tiQ$HdaRYe2pUMqBf0ZpMJz6h/"
foo:3wJ8tiQ/
$ echo 'foo:$apr1$73wJ8tiQ$HdaRYe2pUMqBf0ZpMJz6h/'
foo:$apr1$73wJ8tiQ$HdaRYe2pUMqBf0ZpMJz6h/
    
por 10.06.2014 / 19:04
1

use aspas simples, como segue:

grep 'foo:$apr1$73wJ8tiQ$HdaRYe2pUMqBf0ZpMJz6h/' /vaw/www/htpasswd
    
por 10.06.2014 / 19:06
1

Você deve usar aspas simples em vez de aspas duplas para o argumento --fixed-strings para evitar problemas com o shell que você está usando interpretando os resultados antes que o grep chegue a ele: link

grep --fixed-string 'foo:$apr1$73wJ8tiQ$HdaRYe2pUMqBf0ZpMJz6h/' /var/www/htpasswd

    
por 10.06.2014 / 19:11

Tags