Bonsoir à tous,
En désespoir de cause, je viens voir si je peux trouver de l'aide ...
Mon problème : j'ai un fichier de départ FD et n fichiers F1, F2, ..., Fn (tous a un seul champ).
Je veux filtrer dans FD toutes les lignes existantes dans F1 = > créer un fichier Res1
Prendre Res1 : filtrer tout ce qui existe dans F2 => créer Res2
Prendre Res2 : filtrer tout ce qui existe dans F3 .....pour au final avoir un fichier de départ FD filtré de tout ce qui existe dans les n fichiers F1, F2, ..., Fn

Ce qui veut dire que le fichier de sortie de ma boucle devient le .... fichier d'entrée au tour d'après !
Et ça marche pas ....
Chaque fichier fait ~500 000lignes donc je me suis dit que mes fichiers devenant de plus en plus petits, j'irais de plus en plus vite ....
Ce que j'ai fais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
#!/bin/bash
# Prend 2 arguments : le nom du fic a filtrer (pas son chemin) et un dossier qui contient les fichiers qui vont servir à filtrer. 
# NB : le fic a filtrer est aussi dans le dossier qui contient les fichiers filtrants 
 
FICHIERS=$(ls $2)
tmp=$1
cpt=1
for fichier in $FICHIERS
do
	if [ "$fichier" != "$1" ]
	then
	echo "Fichier trouve : $fichier"
 
	>resFiltration$cpt
 
	while read line
	do
		if ! grep -q -m 1 "$line" $2/$fichier		# si la ligne n'est pas au moins une fois dans le fichier
		then
			echo $line >> resFiltration$cpt
		fi
	done < $tmp	# on envoie $tmp sur l'entree standard du while
 
		((cpt++))
		tmp=$"resFiltration$cpt"
		echo "new tmp :$tmp"
	fi
done
Si vous avez une aide à m'apporter... merci infiniment !
Bonne soirée
CarréNoir