bonjour
j'ai une question:
Quelle est la différence d'exécution entre les deux commandes suivantes ?
Code:ls l fichier; grep *pl fichier
merciCode:ls l fichier; grep ".*pl" fichier
Version imprimable
bonjour
j'ai une question:
Quelle est la différence d'exécution entre les deux commandes suivantes ?
Code:ls l fichier; grep *pl fichier
merciCode:ls l fichier; grep ".*pl" fichier
man regex
regarde le role de . de * et du reste ... c'est pas si complexe ...
le truc de base :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 . (dot) - a single character. ? - the preceding character matches 0 or 1 times only. * - the preceding character matches 0 or more times. + - the preceding character matches 1 or more times. {n} - the preceding character matches exactly n times. {n,m} - the preceding character matches at least n times and not more than m times. [agd] - the character is one of those included within the square brackets. [^agd] - the character is not one of those included within the square brackets. [c-f] - the dash within the square brackets operates as a range. In this case it means either the letters c, d, e or f. () - allows us to group several characters to behave as one. | (pipe symbol) - the logical OR operation. ^ - matches the beginning of the line. $ - matches the end of the line.
merci monsieur frp31
je souhaite savoir la différence entre
grep *pl fichier
et
grep ".*pl" fichier
merci
Bonjour,
Dans le premier cas, comme * n'est pas protégé par des guillemets, ton shell va remplacer le *pl par tous les fichiers du répertoire courant qui sont représenté par ce pattern.
Par exemple si dans ton répertoire tu as les fichiers suivant:
avec ta ligne:Code:
1
2
3
4 toto foo.pl bar.pl bob
c'est comme si tu avais saisi:Code:ls l fichier; grep *pl fichier
par contre si tu n'as pas de fichier représentatif du pattern, là tu conserveras bien *pl comme si tu l'avais mis entre guillemet (ton deuxième cas).Code:ls l fichier; grep bar.pl foo.pl fichier