Trouver chaque occurrence d’une regex dans un fichier

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!):