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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Commande awk pour extraire des blocs d'un fichier + regexp sur lignes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Commande awk pour extraire des blocs d'un fichier + regexp sur lignes

n°2083358
souliane
Posté le 20-06-2011 à 13:45:16  profilanswer
 

Salut les gars,
 
j'ai un fichier sous ce format :

Code :
  1. CLASS <nom_classe1> : <parent1>
  2. ATTR1
  3. ATTR2
  4. CLASS <nom_classe2> : <parent2>
  5. ATTR1
  6. ATTR2
  7. ...

Et j'aimerais le diviser en autant de fichiers qu'il y a de classes comme ceci :
 
nom_classe1.txt

Code :
  1. CLASS <nom_classe1> : <parent1>
  2. ATTR1
  3. ATTR2

nom_classe2.txt

Code :
  1. CLASS <nom_classe2> : <parent2>
  2. ATTR1
  3. ATTR2

Sachant que dans mes noms de classes il peut y avoir des espaces, des caracteres speciaux... etc. Je ne veux garder que les lettres a-z A-Z et les underscores.
 
J'ai ce script qui fonctionne mais la partie renommage prend des plombes (le fichier principal fait plusieurs Mo et contient plus de 100 classes) :

Code :
  1. cat $file | awk -v f=${file} '/CLASS </{s++}{print > "classes_" f "/class" s}'
  2. # Renommer les fichiers prend des plombes !
  3. for class in `ls classes_$file/class*`; do
  4.     mv $class classes_$file/`head -n1 $class | cut -d '<' -f2 | sed s/"[^a-zA-Z_]"//g`.txt
  5. done

J'aimerai intégrer le renommage dans la commande awk pour accélérer mais j'y arrive pas... vous pouvez m'aider ?

mood
Publicité
Posté le 20-06-2011 à 13:45:16  profilanswer
 

n°2083365
gilou
Modérateur
Modzilla
Posté le 20-06-2011 à 13:56:40  profilanswer
 

Je pense que tout ça sera bien plus efficace si c'est fait en perl, qui est bien plus adapté à ce genre de choses.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Commande awk pour extraire des blocs d'un fichier + regexp sur lignes

 

Sujets relatifs
VBA, creer et ecrire un fichier text (.txt) depuis un macro[Résolu]copier fichier qui se trouve dans dossier1 dans le dossier2
[VBA] comparaison entre 2 lignes successives[Bash] Additioner des lignes sous conditions
Lire un fichier text et extraire les caracteres 25 a 37 de chaque lignprobelm de chargement de fichier dans plusieur textbox
Extraction du contenu d'une TEXTAREA vers fichier texteCours de C "minimaliste en lignes, riche en résultats"
Extraire un mot d'une ligne suivant ce qui l'encadre 
Plus de sujets relatifs à : Commande awk pour extraire des blocs d'un fichier + regexp sur lignes


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