J'ai un fichier nommé newfile
. Le contenu de ce fichier est:
abc
xyz
abc
Maintenant, je veux trouver des lignes qui commencent par a
et se terminent par c
. J'entre la commande suivante mais les résultats ne sont pas les mêmes que ceux attendus par moi:
grep -E '^ac$' newfile
Le problème avec cette commande est que, lorsque j'utilise ^ac$
, la commande l'interprète en commençant par ac
au lieu de a
.
Le problème avec cette commande est que lorsque j'utilise ^ ac $, la commande l'interprète en commençant par 'ac' au lieu de commencer par 'a'.
Pas vraiment. Puisque vous avez utilisé le $
ancre , vous recherchez les lignes qui se terminent juste après la chaîne ac
, de sorte que seules les lignes contenant exactement unique ac
et pas plus les caractères sont appariés.
Pour autoriser les caractères compris entre ces lettres, utilisez l'expression régulière pour tout décompte de caractères: .*
(ou si vous souhaitez autoriser un seul caractère comme dans abc
dans l'exemple, utilisez .
. sans quantificateurs comme *
.)
En passant, vous pouvez simplement laisser l'option -E
pour cette regex, car elle n'implique aucune syntaxe différente dans ces deux variantes.
Le résultat est donc:
grep '^a.*c$' newfile