2011-07-08 13 views
6

¿Hay alguna manera de hacer que grep coincida con una cadena exacta, y no lo analice como una expresión regular? ¿O hay alguna herramienta para escapar de una cadena correctamente para grep?grep match subserie exacta que ignora la sintaxis regex

$ version=10.4 
$ echo "10.4" | grep $version 
10.4 
$ echo "1034" | grep $version # shouldn't match 
1034 
+1

Es de hecho. 15 – johv

Respuesta

11

Uso grep -F o fgrep.

$ echo "1034" | grep -F $version # shouldn't match 
$ echo "10.4" | grep -F $version 
10.4 

Ver página del manual:

-F, --fixed-strings 
     Interpret PATTERN as a list of fixed strings, separated 
     by newlines, any of which is to be matched. 

que estaba buscando el término "partido literal" o "cadena fija".

(Ver también Using grep with a complex string y How can grep interpret literally a string that contains an asterisk and is fed to grep through a variable?)

0

Esto se debe trabajar ... a mí me funciona:

echo "1034" | grep "10\.4" 
+3

Está escapando de la cadena manualmente. – johv