Boucle for - parcourir 2 fichiers

Résolu/Fermé
Alex_3333 Messages postés 2 Date d'inscription jeudi 26 mars 2020 Statut Membre Dernière intervention 26 mars 2020 - Modifié le 26 mars 2020 à 11:39
Alex_3333 Messages postés 2 Date d'inscription jeudi 26 mars 2020 Statut Membre Dernière intervention 26 mars 2020 - 26 mars 2020 à 11:30
Bonjour,

Désolé de revenir sur ce sujet qui a sans doute été abordé plusieurs fois, je suis débutant et malheureusement je ne trouve pas mon bonheur sur le forum ou sur internet.

Je cherche à parcourir un 1er fichier ligne par ligne puis à comparer chacune de ses lignes avec chacune des lignes d'un 2ème fichier, si le résultat match alors je l'écris dans une log.

Mon 1er fichier contient des numéros de commandes et comporte environ 200 lignes, exemple :
55555
66666

etc

Mon 2ème fichier contient un nom de fichier associé à son numéro de commande et contient environ 3000 lignes, exemple :
test1.pdf:11111
test2.pdf:22222
test3.pdf:33333
test4.pdf:44444
test5.pdf:55555
test6.pdf:66666

etc

Le but est donc d'avoir en sortie dans ma log, les résultats matchés, avec le nom de fichier et son numéro de commande, soit :
test5.pdf:55555
test6.pdf:66666


Merci beaucoup par avance pour votre aide.
A voir également:

2 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
26 mars 2020 à 11:06
Salut,

Pas la peine de faire une boucle, grep fait ça très bien ;-)

Le contenu des fichiers f1 et f2 :
$ more f*
::::::::::::::
f1
::::::::::::::
55555
66666
77777
::::::::::::::
f2
::::::::::::::
test1.pdf:11111
test2.pdf:22222
test3.pdf:33333
test4.pdf:44444
test5.pdf:55555
test6.pdf:66666


La commande qui envoie le résultat dans f3 :
$ grep -f f1 f2 > f3


Le contenu de f3 :
$ cat f3
test5.pdf:55555
test6.pdf:66666

1
Alex_3333 Messages postés 2 Date d'inscription jeudi 26 mars 2020 Statut Membre Dernière intervention 26 mars 2020
26 mars 2020 à 11:30
Bonjour,

Merci pour votre retour rapide, effectivement c'est finalement très simple, je n'avais pas connaissance de l'option -f de grep, la prochaine fois, un man grep me sera utile :)
0