Comment puis-je répertorier chaque occurrence d’une expression régulière dans un fichier, où une ligne peut contenir plusieurs fois l’expression régulière?
Example: XXXXXXXXXX FOO3 XXXX FOO4 XXX XXX FOO2 XXXX FOO9 XXXXXX FOO5 The result should be: FOO3 FOO4 FOO2 FOO9 FOO5
La regex serait /FOO./ dans ce cas.
Grep renverra chaque ligne correspondant au moins une fois. Mais c’est maintenant ce que je veux.
Avez-vous essayé l’option -o: ( page de manuel grep )
-o, –only-matching Afficher uniquement la partie d’une ligne correspondante correspondant à PATTERN.
Votre question n’est pas tout à fait claire, d’autant plus que les exemples de données sont super génériques. Mais, voici quelques modèles qui pourraient correspondre:
Votre modèle correspond à FOO suivi de tout caractère qui correspondrait à tout à la fin de la ligne. Je ne pense pas que vous voulez cela alors essayez quelque chose comme ça:
/FOO[0-9]+/
– correspond à FOO suivi d’un ou plusieurs nombres.
/FOO[^ ]+/
– correspond à FOO suivi de tout caractère qui n’est PAS un espace. Cela pourrait être la meilleure solution compte tenu de votre modèle d’exemple.
/FOO[0-9a-zA-Z]+/
– correspond à FOO suivi de tout caractère alphanumérique
Utilisez grep -o FOO.
( -o
: montrer seulement les correspondances)
Votre regex pourrait même être étendue pour ne correspondre qu’à FOO suivie d’un nombre, au lieu de n’importe quel caractère ( .
Correspondra également aux espaces!):