|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 339 ![]() |
Bonjour
j'ai deux fichiers texte. le premier : fichier 1 --- a 1 a 2 b 1 b 2 c 1 c 2 le deuxième : fichier 2 --- a b je veux avoir un fichier comme tel fichier final --- a 1 a 2 b 1 b 2 donc vous l'aurez compris, je veux avoir une liste de correpondance entre les articles (a et b et c) du fichier 1 qui existent dans le fichier 2 le probleme c'est que mon premier fichier est très volumineux (600 mega), du coup un grep peut mettre plus d'une journée à s'exécuter Quelqu'un saurait un moyen rapide (efficace) de faire ceci Merci |
|
|
00
|
|
|
#2 | ||
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 451 ![]() |
Travaille dans l'autre sens :
Code :
Moyen encore plus efficace : charge tes fichiers dans une base de données et fais une requête sur les tables ainsi alimentées.
__________________
Modérateur Langage SQL N'oubliez pas le bouton et pensez aux balises [code]Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur ![]() |
||
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 339 ![]() |
ca ne marche pas..
es tu sur de cette syntaxe? sinon a koi sert le && dans ca?? il s'agit d'une concatenation?? je n'arrive pas à saisir ton algorithme, tu peux m'eclairer stp? merci |
|
|
00
|
|
|
#4 | ||
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 451 ![]() |
est équivalent à
Code :
grep -q "^${ligne%% *}$" fichier2 && echo "${ligne}" >> fichierfinal Code :
__________________
Modérateur Langage SQL N'oubliez pas le bouton et pensez aux balises [code]Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur ![]() |
||
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 339 ![]() |
alors je ne vois pas l'erreur, pourtant j'utilise exactement les memes fichiers que j'ai publiés pour mon test.
PS: "^" n'affiche t il pas le premier caractere?? |
|
|
00
|
|
|
#6 |
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 451 ![]() |
^ signifie le début de la ligne
$ signifie la fin de la ligne ^CHAINE$ signifie donc une ligne qui ne contient que CHAINE
__________________
Modérateur Langage SQL N'oubliez pas le bouton et pensez aux balises [code]Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur ![]() |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 339 ![]() |
ok merci j'ai reussi a lfaire marcher.. c'etait une histoire de tab et d'espaces..
par contre, en parcourant l aide de grep, il s'est avere que fgrep fait ca a la perfection Code :
fgrep -f fichier2 fichier1 >> fichierfinal merci qd meme
|
|
|
00
|
|
|
#8 |
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 451 ![]() |
En effet, j'avais oublié l'option -f de grep.
Merci de me l'avoir rappelée.
__________________
Modérateur Langage SQL N'oubliez pas le bouton et pensez aux balises [code]Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur ![]() |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com