[shell] Filtrer un fichier par le contenu d'un autre fichier

Filtrer un fichier par le contenu d'un autre fichier [shell] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 13-10-2010 à 15:10:20    

Bonjour,
 
Je me permet de soumettre mon problème pour lequel je ne trouve pas de solution:
 
J'ai un fichier texte de plusieurs GO, dans lequel se trouve beaucoup de ligne avec un identifiant à un endroit précis du fichier (position fixe).
Je souhaite extraire de ce fichier les lignes dont cet identifiant se trouve dans un autre fichier, ne contenant lui que la liste des identifiants à retenir.
 
Y a-t-il un moyen de réaliser ceci en faisant un petit script ?
 
Merci pour vos pistes !

Reply

Marsh Posté le 13-10-2010 à 15:10:20   

Reply

Marsh Posté le 13-10-2010 à 15:21:27    

Bonjour Sebwap
Sur quel OS/distrib ?
et si tu pouvais monter un extrait de ces fichiers aussi!
Et être plus explicite :p


Message édité par roondar le 13-10-2010 à 15:23:23
Reply

Marsh Posté le 13-10-2010 à 15:24:46    

je suis sur XP mais j'ai les SFU d'installé, du coup je poste dans cette section ou je risque d'avoir plus d'info.
je ne peux pas montrer d'extrait de ces fichiers mais globalement ça ressemble à ça:
 
Fichier de base:

xxxAAAAAAAAAAAxxxxxxxxxxxxxxx
xxxAAAAAAAAAAAxxxxxxxxxxxxxxx
xxxDDDDDDDDDDDxxxxxxxxxxxxxxx
xxxAAAAAAAAAAAxxxxxxxxxxxxxxx


 
Fichier référentiel:

AAAAAAAAAAA
BBBBBBBBBBB
CCCCCCCCCCC


 
Je ne voudrais obtenir en sortir que les première, deuxième et dernière ligne du fichier de base.
 
J'ai essayé avec la commande JOIN mais elle ne semble pas fonctionner en position fixe.


Message édité par Sebwap le 13-10-2010 à 15:25:05
Reply

Marsh Posté le 13-10-2010 à 15:30:34    

Code :
  1. cat fichier.txt |cut -c 4-14|sort -u

 :(  


Message édité par roondar le 13-10-2010 à 15:31:23
Reply

Marsh Posté le 13-10-2010 à 15:32:03    

Non, je souhaite faire un croisement entre le fichier de base et le fichier référentiel pour ressortir uniquement les lignes du fichier de base dont la clé est dans le fichier référentiel.

Reply

Marsh Posté le 13-10-2010 à 15:41:22    

Code :
  1. while read ident 
  2. do 
  3.    echo "######################"
  4.    grep "$ident" base.txt
  5. done < referenciel.txt


Message édité par roondar le 13-10-2010 à 15:41:33
Reply

Marsh Posté le 13-10-2010 à 15:53:03    

Ça m'a l'air OK effectivement, je n'aurais jamais pensé à utiliser un grep "inversé".
Merci
Maintenant ça tourne, et ça risque de durer un peu !

Reply

Marsh Posté le 13-10-2010 à 15:55:33    

Sebwap a écrit :

Ça m'a l'air OK effectivement, je n'aurais jamais pensé à utiliser un grep "inversé".
Merci
Maintenant ça tourne, et ça risque de durer un peu !


 
Question d'habitude et de simplicité.
En effet ca risque d'être long si tu as plusieurs Go à traiter  ;)

Reply

Marsh Posté le 13-10-2010 à 16:07:31    

La base fait 6go %)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed