[CH GOUROU en BASH] Traitement fichiers texte

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

yonni
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 127
Inscription: Ven Fév 04, 2005 16:45

[CH GOUROU en BASH] Traitement fichiers texte

Message le Jeu Nov 27, 2008 11:24

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 !
Dernière édition par yonni le Jeu Nov 27, 2008 12:23, édité 1 fois.


kylliox
WRInaute discret
WRInaute discret
 
Messages: 52
Inscription: Ven Oct 20, 2006 20:39

Message le Jeu Nov 27, 2008 11:46

bonjour,
essayer avec "cat fic1 fic2 | sort -u"


kylliox
WRInaute discret
WRInaute discret
 
Messages: 52
Inscription: Ven Oct 20, 2006 20:39

Message le Jeu Nov 27, 2008 11:51

Ah désolé il manque la boucle, je n'avais pas bien lu la question
bon courage quand même

yonni
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 127
Inscription: Ven Fév 04, 2005 16:45

Message le Jeu Nov 27, 2008 11:53

Merci quand même kylliox ;)


Topsitemaker
WRInaute impliqué
WRInaute impliqué
 
Messages: 373
Inscription: Dim Nov 19, 2006 0:47

Message le Jeu Nov 27, 2008 13:48

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


Ron56
WRInaute passionné
WRInaute passionné
 
Messages: 706
Inscription: Dim Nov 20, 2005 20:05

Message le Jeu Nov 27, 2008 19:06

j'ai fait un ptit truc vite fait

Code: Tout sélectionner
for line in $(cat fichier2)
do cat fichier1 | grep "$line"
done


Avec fichier 1 :

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


Fichier 2 :

ALBATROS
AN
BATEAUX
BOULE
BOWLING
CONSTRUCTION
COOPP
COPIE


Le résultat du script :

ron@ron-desktop:~/Desktop$ sh script
AABATEAUX
BOULE
BOWLINGCOOL
A-ACONSTRUCTION


Ronan :P

yonni
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 127
Inscription: Ven Fév 04, 2005 16:45

Message le Jeu Nov 27, 2008 19:27

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 ...


Ron56
WRInaute passionné
WRInaute passionné
 
Messages: 706
Inscription: Dim Nov 20, 2005 20:05

Message le Jeu Nov 27, 2008 20:19

Ca m'apprendra a pas lire ...

Je vois pas comment faire autrement :s


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités