4 votes

Quel est l'utilité de ? dans la commande grep.. Et utilisation pratique

J'ai essayé de trouver l'utilisation pratique réelle de ? c'est-à-dire par exemple "egrep a? nom_fichier" mais je n'ai pas pu en trouver.. Cela renvoie tous les résultats..

Alors, S'il vous plaît, aidez-moi à savoir comment utiliser réellement la commande egrep ?

Si j'utilise 'a?', cela renvoie tous les résultats c'est-à-dire les chaînes ou les lignes qui ont 0 a, 1 a, 2 a et ainsi de suite.. c'est-à-dire que je ne trouve pas l'utilisation de la même chose..

Merci

10voto

Dave Cheney Points 18132

Dites que vous souhaitez faire correspondre des expressions d'assignation numériques comme ceci dans un script :

x=1234

où certains nombres sont négatifs et ont un signe moins :

x=-5678

Vous pourriez utiliser ceci :

grep -E "x=-?[0-9]+" *

Le point d'interrogation rend le signe moins optionnel.

(Je ne pense pas que `grep` simple supporte ? ou +, d'où -E).

10voto

Cros Points 1853

? n'est pas un méta-caractère dans le grep de base, donc si vous cherchez avec a?, vous recherchez en fait a suivi d'un point d'interrogation.

Si vous utilisiez egrep (alias grep -E), alors les réponses indiquant que ? est un méta-caractère regex signifiant zéro ou un de l'entité précédente seraient correctes.

4voto

C'est une recherche de caractère unique, correspondant à un ou zéro du caractère qui le précède.

Remarque : vous devez échapper au ? en utilisant d'abord un \ : \?.

1voto

F.P Points 546

En termes d'expressions régulières, a? signifie 0 ou 1 'a'. Donc si vous recherchez une chaîne qui a 0 ou 1 'a', vous obtiendrez tout. Un endroit où cela serait utile est de faire correspondre des entiers positifs :

/^\+?\d+$/

ce qui se traduit par

^: début de la ligne
\+: signe +
?: 0 ou 1 du caractère précédent
\d: chiffre
+: un ou plusieurs du caractère précédent
$: fin de la ligne

et correspondrait à la fois à +123 et 456

Jetez un œil à regular-expressions.info pour plus d'informations sur l'utilisation des expressions régulières.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X