analyser un fichier texte pour initialiser des variables

analyser un fichier texte pour initialiser des variables - Shell/Batch - Programmation

Marsh Posté le 07-06-2005 à 10:11:13    

Bonjour, je suis débutant en shell script,
j'aimerai pouvoir analiser chaque ligne d'un fichier obtenu avec "ls --full-time" afin d'initialiser des variables :  
exemple fichier :  
total 31650
-rwx------+ 1 Dam Aucun 12219374 2004-12-25 17:44:52.000000000 +0100 01 - Luigi Circuit - 3L - 1'16''957 - joueur1.wmv
-rwx------+ 1 Dam Aucun  5421060 2004-12-25 17:43:30.000000000 +0100 02 - Peach Beach - 3L - 1'09''005 - joueur2.mpeg
-rwx------+ 1 Dam Aucun 11435636 2004-12-25 17:44:36.000000000 +0100 04 - Dry Dry Desert - 3L - 1'32''688 - joueur3.wmv
 
pour chaque ligne j'amerais initialiser les variables: date, circuit et nom
exemple 1 ligne1: date=2004-12-25 ; circuit=Luigi Circuit ; nom=joueur1
puis écrire ces variables dans un autre fichier ET passer à la ligne suivante et ainsi de suite.
je ne sais pas comment faire.
Je vous remercie de votre aide.

Reply

Marsh Posté le 07-06-2005 à 10:11:13   

Reply

Marsh Posté le 07-06-2005 à 14:06:47    

Je n'ai "que" Solaris sous la main et pas le temps de faire qque chose de "propre" ;)
Celà ne fonctionne pas avec AWK mais avec NAWK sous Solaris, peut être que le AWK de ta distrib est plus évolué que celui de Solaris ...
 

ls --full-time | nawk '{ split($0,Trunc," - " ) ; split(Trunc[5],Trunc2,"." ) ; print "date="$6" ; circuit="Trunc[2]" ; joueur="Trunc2[1] }' >> monfichier.txt


 
EDIT: Peut être aussi avec GNU AWK ...


Message édité par Deadlock le 07-06-2005 à 14:08:26

---------------
Institutions européennes: Ensemble d'outils dont le but est de transformer une grande quantité d'argent en merde. Cette merde est utilisée pour créer de nouveaux fonctionnaires. L'argent restant payant des externes pour faire leur travail.
Reply

Marsh Posté le 07-06-2005 à 14:23:46    

Merci c'est syper sympa. Seul pb, je travaille sous winXP/cygwin/bash et n'ai que les classiques awk(3.1.4), tr(5.2.1), sed(4.1.3), cut(5.2.1)...
Mais au moins tu m'apportes une solution :) . Je vais essayer de voir si je peux installer un nawk sous cygwin.;)
En fait au final je crée un fichier sql pour une bdd, afin de pouvoir faire des tris selon ces différents champs...
Encore Merci.  
Si quelqu'un a une autre idée, je suis tout prêt à la travailler...

Reply

Marsh Posté le 07-06-2005 à 15:11:20    

Ca marche sous Cygwin sur mon PC en utilisant GAWK:
 

$ cat text
-rwx------+ 1 Dam Aucun 12219374 2004-12-25 17:44:52.000000000 +0100 01 - Luigi Circuit - 3L - 1'16''957 - joueur1.wmv
-rwx------+ 1 Dam Aucun  5421060 2004-12-25 17:43:30.000000000 +0100 02 - Peach Beach - 3L - 1'09''005 - joueur2.mpeg
-rwx------+ 1 Dam Aucun 11435636 2004-12-25 17:44:36.000000000 +0100 04 - Dry Dry Desert - 3L - 1'32''688 - joueur3.wmv
se482@pc15037 /cygdrive/d/temp
$ cat text | gawk '{ split($0,Trunc," - " ) ; split(Trunc[5],Trunc2,"." ) ; print "date="$6" ; circuit="Trunc[2]" ; joueur="Trunc2[1] }' >> monfichier.txt
 
se482@pc15037 /cygdrive/d/temp
$ cat monfichier.txt
date=2004-12-25 ; circuit=Luigi Circuit ; joueur=joueur1
date=2004-12-25 ; circuit=Peach Beach ; joueur=joueur2
date=2004-12-25 ; circuit=Dry Dry Desert ; joueur=joueur3
 
se482@pc15037 /cygdrive/d/temp
$ which gawk
/usr/bin/gawk
 
se482@pc15037 /cygdrive/d/temp


---------------
Institutions européennes: Ensemble d'outils dont le but est de transformer une grande quantité d'argent en merde. Cette merde est utilisée pour créer de nouveaux fonctionnaires. L'argent restant payant des externes pour faire leur travail.
Reply

Marsh Posté le 07-06-2005 à 16:03:26    

Mille remerciements, pardonne moi je ne savais pas que gawk et nawk étaient similaires, je ne les ai jamais utilisés. J'ai bien gawk sous mon cygwin :). Merci encore :)

Reply

Sujets relatifs:

Leave a Replay

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