2011-07-08 13 views
6

Czy jest jakiś sposób, aby grep pasował do dokładnie ciąg, a nie parsować go jako wyrażenie regularne? A może jest jakieś narzędzie, aby odpowiednio uciec ciągowi znaków dla grep?grep dopasowuje dokładny podłańcuch ignorując składnię regex

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

To jest rzeczywiście. 15 – johv

Odpowiedz

11

Użyj grep -F lub fgrep.

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

Patrz strona człowiek:

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

szukałam terminu "dosłowne dopasowanie" lub "stałe string".

(Patrz także Using grep with a complex string i How can grep interpret literally a string that contains an asterisk and is fed to grep through a variable?)

0

To powinno działać ... to działa na mnie:

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

Uciekłeś z łańcucha ręcznie. – johv