Bonjour
Je souhaite faire une recherche dans un fichier d'une chaine de caractères composé de 3 éléments dans l'ordre mais avec des données entre.
J'ai essayé avec cette instruction
grep "element1*element2*element3" monfichier.txt
Version imprimable
Bonjour
Je souhaite faire une recherche dans un fichier d'une chaine de caractères composé de 3 éléments dans l'ordre mais avec des données entre.
J'ai essayé avec cette instruction
grep "element1*element2*element3" monfichier.txt
1 - Avec des guillemets, les * sont interprétés par le shell
2 - Tu cherches une ligne correspondant à une expression régulière donc tu dois utiliser des guillemets "simple"
Attention la syntaxe d'une expression régulière peut ressembler à un shell expansion mais ce sont deux choses différentes qui fonctionnent différemment
Code:
1
2 grep 'element1.*element2.*element3' monfichier.txt
entre guillemets, les astérisques ne sont pas développés en la [...] liste, classée par ordre alphabétique, des noms de fichiers correspondant à ce motif.Citation:
Envoyé par becket
Code:
1
2
3
4 $ echo "*" * $ echo * fichier_a fichier_b
c'est indifférent.Citation:
Envoyé par becket
dans une regex, Un atome suivi de « * » correspond à une séquence de 0 ou plusieurs correspondances pour l'atome.
Je moinssoie becket et je plussoie N_BaH!
Je rajouterai une différence (àmha importante):
Dans une chaîne avec apostrophes, les variables ne sont pas expansées ('$a' est une chaîne avec le caractère '$' et le caractère 'a', et non le contenu de la variable 'a').
Essaie plutôt:
qui se lit:Code:grep "element1.*element2.*element3" monfichier.txt
trouver "element1", suivi de n'importe quel caractère (sauf fin de ligne) en nombre quelconque, suivi de "element2", suivi de n'importe quel caractère (sauf fin de ligne) en nombre quelconque, suivi de "element3".