Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1678 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1243194
Sebwap
Posté le 13-10-2010 à 15:10:20  profilanswer
 

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 !

mood
Publicité
Posté le 13-10-2010 à 15:10:20  profilanswer
 

n°1243200
roondar
Posté le 13-10-2010 à 15:21:27  profilanswer
 

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
n°1243209
Sebwap
Posté le 13-10-2010 à 15:24:46  profilanswer
 

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
n°1243216
roondar
Posté le 13-10-2010 à 15:30:34  profilanswer
 

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

 :(  


Message édité par roondar le 13-10-2010 à 15:31:23
n°1243218
Sebwap
Posté le 13-10-2010 à 15:32:03  profilanswer
 

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.

n°1243246
roondar
Posté le 13-10-2010 à 15:41:22  profilanswer
 

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
n°1243271
Sebwap
Posté le 13-10-2010 à 15:53:03  profilanswer
 

Ç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 !

n°1243277
roondar
Posté le 13-10-2010 à 15:55:33  profilanswer
 

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  ;)

n°1243285
Sebwap
Posté le 13-10-2010 à 16:07:31  profilanswer
 

La base fait 6go %)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

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

 

Sujets relatifs
shell : ne pas interpreter le $ comme une variableFichier bat?
Script shell ftpComment fixer une variable shell pour tout le monde
Quel programme lit mon fichier de config ?retrouver le nom du fichier modifié
script pour déplacer des fichiers listés dans un fichier textefichier windows bloque
Plus de sujets relatifs à : [shell] Filtrer un fichier par le contenu d'un autre fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR