Estoy tratando de buscar una cadena 0.49
(con punto) usando el comando
grep -r "0.49" *
Pero lo que sucede es que también obtengo resultados no deseados que contienen cadenas como 0449
, 0949
etc. La cuestión es que Linux considera el punto (.) Como cualquier personaje y saca todos los resultados. Pero quiero obtener el resultado solo para "0.49".
\\.
para que funcione. Estoy usando zsh.\\.
para bash, o usar"\."
para escapar del shell.grep -F -r '0.49' *
trata 0.49 como una cadena "fija" en lugar de una expresión regular. Esto hace que.
pierda su significado especial.fuente
Necesitas escapar del
.
as"0\.49"
.A
.
es un meta-carácter regex para coincidir con cualquier carácter (excepto la nueva línea). Para coincidir con un período literal, debe escapar de él.fuente
Solo escapa del
.
grep -r "0\.49"
fuente
También puedes usar "[.]"
fuente
Hay tantas respuestas aquí que sugieren escapar del punto,
\.
pero me he encontrado con este problema una y otra vez:\.
me da el mismo resultado que.
Sin embargo, estas dos expresiones funcionan para mí:
Y:
Estoy usando un shell bash "normal" en Ubuntu y Archlinux.
fuente
grep '\.'
ogrep \\.
(recomendaría encarecidamente el primero. Las comillas dobles también funcionan, como en la pregunta original; pero las comillas simples son más fáciles de entender y usar. Por ejemplo, con comillas dobles, aún necesitaría duplicar la barra diagonal inversa en algunos escenarios )Escape dot. El comando de muestra será.
fuente
Puede escapar del punto y otros caracteres especiales usando \
p.ej. grep -r "0 \ .49"
fuente
\.
rodeado de citas es necesario para que funcione.También puede buscar con - opción que básicamente ignora todos los caracteres especiales y no será interpretada por grep.
fuente