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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [résolu][SHELL] Aide pour un script de découpage de fichier

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[résolu][SHELL] Aide pour un script de découpage de fichier

n°436829
pilou51
Posté le 21-03-2004 à 15:44:51  profilanswer
 

salut,
 
Voilà je me retrouve avec un fichier texte d'environ 3Go soit plusieurs millions de lignes, et j'aimerais découper ce fichier et répartir son contenu dans plusieurs fichiers en fonction de la valeur d'un champ, qui se retrouve sur chaque ligne :  
 
exple : j'ai les lignes

Code :
  1. a bb ccc dddd
  2. e ff ccc eeee
  3. h tt fff iiii
  4. k jj fff oooo


et mon critère de tri se trouve sur le 3ème champ.
j'aimerais que les 2 premières lignes se retrouvent dans un fichier , et les 2 suivantes dans un autre (par exple dans les fichiers file_ccc et file_fff)
 
Voilà, j'espère avoir été clair avec mon pb :)  
Je ne demande pas un script qui marche et tout, mais simplement les commandes que je pourrais utiliser pour ça, en gros :)
 
Merci bcp d'avance :jap:


Message édité par pilou51 le 22-03-2004 à 10:17:57
mood
Publicité
Posté le 21-03-2004 à 15:44:51  profilanswer
 

n°436835
Mjules
Modérateur
Parle dans le vide
Posté le 21-03-2004 à 15:58:26  profilanswer
 

regarde du côté de awk ou sed
http://www.shellunix.com/


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
n°436868
pilou51
Posté le 21-03-2004 à 16:41:35  profilanswer
 

ok merci je v voir ça :)
 
en fait, il suffirait de parcourir mon fichier, et lorsque je trouve tel ou tel code, écrire la ligne dans un autre...
mais comment lui dire d'écrire toute la ligne correspondante ?

n°436871
Mjules
Modérateur
Parle dans le vide
Posté le 21-03-2004 à 16:44:30  profilanswer
 

peut-être tout bonnement avec grep :
grep ccc mon_fichier > nouveau_fichier_1

 
EDIT : a priori ça marche


Message édité par Mjules le 21-03-2004 à 16:46:27

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
n°436905
aigles
Posté le 21-03-2004 à 17:12:37  profilanswer
 

Essaye ça :

awk '
$3 != prec {
   if (fichier != "" ) close(fichier);
   fichier = "fic_" $3;
}
{
   print $0 >> fichier;
}
' input_file


---------------
Jean Pierre.
n°436959
pilou51
Posté le 21-03-2004 à 17:46:28  profilanswer
 

ok merci bcp all, ça a l'air de marcher, je ferai des tests plus complets demain avec le vrai fichier...
 
merci infiniment  :jap:  :jap:  :hello:

n°437564
pilou51
Posté le 22-03-2004 à 09:08:32  profilanswer
 

euh j'aurais une petite question subsidiaire :)
 
En fait mon code distinctif est numérique, et peut se retrouver ailleurs dans les lignes du fichier (j'ai plusieurs champs numériques).
Donc la solution que j'ai trouvée est de chercher mon code précédé d'une tabulation (la probabilité que le code se retrouve en début d'un autre champ est quasi nulle).
 
j'ai essayé avec grep \t100 par exple, mais il n'a pas l'air de prendre le \t comme une tabulation. j'ai essayé d'utiliser l'argument -e comme je l'ai vu dans une doc mais il m'envoie jeter en me disant argument inconnu (je suis sur une station Unix sous ksh).
 
Donc si vous aviez une solution, ça serait très cool :)
 
merci d'avance :jap:

n°437583
aigles
Posté le 22-03-2004 à 09:36:10  profilanswer
 

Où se trouve le champ servant de critère pour découper ton fichier ?  
Je ne vois pas comment il est possible de procéder s'il est n'est pas en position fixe (en terme de champ).
 
Tu dis que la solution est de rechercher le code précédé d'une tabulation, mais où récupères tu la toute première valeur du code ?
 
Quelle est la structure du fichier ?


---------------
Jean Pierre.
n°437594
pilou51
Posté le 22-03-2004 à 10:17:30  profilanswer
 

Bon en fait j'ai trouvé une solution intermédiaire qui semble suffir, à savoir chercher la chaîne ' aaa' avec un espace devant...
 
Le problème est justement que le code n'est pas à place fixe, et que le séparateur est une tabulation...
mais bon, ma solution semble marcher, donc je mets mon prob comme résolu :)
 
merci en tt cas :jap:


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

  [résolu][SHELL] Aide pour un script de découpage de fichier

 

Sujets relatifs
[MKD10] augmenter le son général aumix ? [résolu]ALSA / Debian : un ch'ti coup d'pogne... [Resolu]
Grosse boulette, besoin d'aidescript shell pour la suppression de virtualhost dans httpd.conf ??
Récupèrer la valeur passée dans le pipe avec un script shellRechercher un fichier sous linux (ainsi que son contenu)
Aide svplscript : detecter si un programme est lancé
Plus de sujets relatifs à : [résolu][SHELL] Aide pour un script de découpage de fichier


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