Estou tentando procurar uma string 0.49
(com ponto) usando o comando
grep -r "0.49" *
Mas o que está acontecendo é que também estou obtendo resultados indesejados que contêm a string, como 0449
, 0949
etc , . O problema é o linux, considerando o ponto (.) Como qualquer caractere e apresentando todos os resultados. Mas eu quero obter o resultado apenas para "0,49".
\\.
para que funcionasse. Estou usando o zsh.\\.
bash também, ou usar"\."
para escapar do shell.grep -F -r '0.49' *
trata 0,49 como uma string "fixa" em vez de uma expressão regular. Isso faz.
perder seu significado especial.fonte
Você precisa escapar do
.
as"0\.49"
.A
.
é um meta-caractere de expressão regular para corresponder a qualquer caractere (exceto nova linha). Para corresponder a um período literal, você precisa escapar dele.fonte
Apenas escape do
.
grep -r "0\.49"
fonte
Você também pode usar "[.]"
fonte
Ponto de escape. O comando de amostra será.
fonte
Você pode escapar do ponto e de outros caracteres especiais usando \
por exemplo. grep -r "0 \ .49"
fonte
\.
cercado por aspas, é necessário para fazê-lo funcionar.Há muitas respostas aqui sugerindo escapar do ponto,
\.
mas eu estive enfrentando esse problema repetidamente:\.
me dá o mesmo resultado que.
No entanto, essas duas expressões funcionam para mim:
E:
Estou usando um shell bash "normal" no Ubuntu e Archlinux.
fonte
grep '\.'
ougrep \\.
(eu recomendaria fortemente o primeiro. As aspas duplas também funcionam, como na pergunta original; mas as aspas simples são mais fáceis de entender e usar. Por exemplo, com aspas duplas, você ainda precisará dobrar a barra invertida em alguns cenários )Você também pode pesquisar com a opção - que basicamente ignora todos os caracteres especiais e não será interpretada pelo grep.
fonte