[CH GOUROU en BASH] Traitement fichiers texte

WRInaute discret
Salut :)

Je m'arrache les cheveux depuis des jours sur un problème. Le voici exposé :

Je dispose de 2 texte fichiers triés (de plusieurs méga-octets chacun) :

- le premier (fichier1) est formé comme suit :

A---A
A-ACONSTRUCTION
AABATEAUX
BARTIO
BOULE
BOWLINGCOOL
CDRTPO

- le deuxième (fichier2) est en fait une liste de mots communs, formé comme suit :

ALBATROS
AN
BATEAUX
BOULE
BOWLING
CONSTRUCTION
COOPP
COPIE

Ce que je veux faire :

Récupérer toutes les lignes du fichier1 dont au moins une occurrence est présente dans le fichier2. Dans mon exemple, on aurait donc ceci en sortie (fichier3) :

A-ACONSTRUCTION
AABATEAUX
BOULE
BOWLINGCOOL

Ce traitement doit se faire en bash sous unix.
J'ai déjà tenté de boucler sur chacun des mots du fichier2 et de vérifier grâce à un grep si le mot est présent dans le fichier1, toutefois au vu de la taille des fichiers, une telle solution n'est pas satisfaisante, le traitement est extrêmement long. J'ai besoin de faire çà beaucoup plus rapidement.

J'ai songé à utiliser des outils puissants comme join,diff ou comm mais rien de bon n'est sorti de mon cerveau ...
J'ai pensé faire une jointure mot à mot et récupérer le résultat mais je ne parviens pas à mettre çà en oeuvre ...


Merci pour l'aide que vous pourrez m'apporter !
 
WRInaute impliqué
Bonjour,
Tu mets tes 2 fichiers dans 2 tables distincts dans une base de données après tu fais un select avec un left join.

Bonne chance
 
WRInaute discret
Merci Ronan pour ta solution, toutefois comme je le disais une boucle comme la tienne prend trop de temps, les fichiers faisant plusieurs méga-octets...

Je pense plus à une solution avec les filtres unix comm, diff ...
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut