Comment ajouter des caractéres dans une chaine facilement ?

Comment ajouter des caractéres dans une chaine facilement ? - Shell/Batch - Programmation

Marsh Posté le 22-06-2007 à 09:20:04    

Bonjour,
 
Je vous expose mon problème:
J'ai un fichier au format .csv donc avec ; comme séparateur.
Dans ce fichier, les 8ième et 9ième champs sont des heures
 
Exemple:
 

Citation :


IU_ADMINW;0009472;IU_SURVEYW;0024976;N_RUAPSTOR;TERMINE;15/03/2007;0332;0332;00/00/0000;univpid
IU_ADMINW;0009473;IU_ADMIN_D;0024977;N_RUAPSTOR;TERMINE;15/03/2007;0600;0600;15/03/2007;univpid
IU_ADMINW;0009473;IU_PURSUIW;0024978;N_RUAPSTOR;TERMINE;15/03/2007;0600;0600;00/00/0000;univpid


 
Et je voudrais insérer des H pour plus de lisibilité:

Citation :


IU_ADMINW;0009472;IU_SURVEYW;0024976;N_RUAPSTOR;TERMINE;15/03/2007;03H32;03H32;00/00/0000;univpid
IU_ADMINW;0009473;IU_ADMIN_D;0024977;N_RUAPSTOR;TERMINE;15/03/2007;06H00;06H00;15/03/2007;univpid
IU_ADMINW;0009473;IU_PURSUIW;0024978;N_RUAPSTOR;TERMINE;15/03/2007;06H00;06H00;00/00/0000;univpid


 
J'ai déjà un truc qui tourne mais pas optimisé du tout.  :pfff:  
 
Je suppose que ca doit être faisable avec un awk et/ou un sed   :??:


Message édité par NickS2000 le 22-06-2007 à 09:20:36
Reply

Marsh Posté le 22-06-2007 à 09:20:04   

Reply

Marsh Posté le 22-06-2007 à 10:56:53    

Avec awk :

awk '
   BEGIN { FS=OFS=";"}  
   { sub(/^../, "&H", $8); sub(/^../, "&H", $9); print }
' infile


 
Jean-Pierre.

Reply

Marsh Posté le 22-06-2007 à 12:42:13    


 :ouch:  
 
Ca marche et c'est impressionnant de rapidité !
 
Merci beaucoup !!  :jap:

Reply

Sujets relatifs:

Leave a Replay

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