L'utilisation de grep pour rechercher une chaîne qui a un point
Je suis en train de rechercher une chaîne de caractères 0.49
(dot) à l'aide de la commande
grep -r "0.49" *
Mais ce qui se passe, c'est que je suis également à obtenir des résultats indésirables qui contient la chaîne de caractères comme 0449
, 0949
etc,. Le truc, c'est linux considérant le point(.) comme n'importe quel personnage et de faire ressortir tous les résultats. Mais je veux obtenir le résultat que pour les "0.49".
Vous devez vous connecter pour publier un commentaire.
grep
utilise regexes;.
signifie "n'importe quel caractère" dans une expression régulière. Si vous souhaitez un littéral de chaîne, utilisezgrep -F
,fgrep
, ou d'échapper à la.
à\.
.N'oubliez pas d'emballer votre chaîne de caractères entre guillemets doubles. Ou autre chose que vous devriez utiliser
\\.
git grep
.\\.
pour que cela fonctionne. J'utilise zsh.\\.
pour bash trop, ou de l'utilisation"\."
de s'échapper de la coquille.grep -F -r '0.49' *
traite 0.49 un "fixe" chaîne au lieu d'une expression régulière. Cela rend.
perdre sa signification spéciale.Vous avez besoin pour échapper à la
.
comme"0\.49"
.Un
.
est une regex méta-caractères pour correspondre à n'importe quel caractère(sauf saut de ligne). Pour correspondre à une interprétation littérale de la période, vous devez vous échapper.Juste d'échapper à la
.
grep -r "0\.49"
Vous pouvez échapper à la dot et d'autres caractères spéciaux à l'aide de \
par exemple. grep -r "0\.49"
\.
surround avec des citations est nécessaire pour le faire fonctionner.Vous pouvez également utiliser "[.]"
Échapper à la dot. Exemple de commande sera.
Il ya tellement de nombreuses réponses ici, ce qui suggère d'échapper le point avec
\.
mais j'ai été en cours d'exécution dans ce problème, encore et encore:\.
me donne le même résultat que.
Cependant, ces deux expressions de travail pour moi:
Et:
Je suis en utilisant un "normal" bash shell sur Ubuntu et Archlinux.
grep '\.'
ougrep \\.
(je vous recommande fortement de l'ancien. Les guillemets doubles travail, aussi, comme dans la question d'origine; mais les guillemets simples sont plus faciles à comprendre et à utiliser. Par exemple, avec des guillemets, vous auriez encore besoin de doubler la barre oblique inverse dans certains scénarios).