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

Commande awk pour extraire des blocs d'un fichier + regexp sur lignes - Shell/Batch - Programmation

Marsh Posté le 20-06-2011 à 13:45:16    

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 ?

Reply

Marsh Posté le 20-06-2011 à 13:45:16   

Reply

Marsh Posté le 20-06-2011 à 13:56:40    

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é!  --
Reply

Sujets relatifs:

Leave a Replay

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