Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Autres systèmes > Unix > Solaris

Solaris Forum d'entraide sur le système Solaris.

Réponse
 
Outils de la discussion
Vieux 13/11/2008, 20h34   #1 (permalink)
Invité de passage
 
Date d'inscription: novembre 2008
Messages: 3
Par défaut Traitement fichier unix solaris

Bonjour,

dans un répertoire, j'ai une liste de fichier texte contenant des données de la forme suivante:
Nom du fichier : ExtractionA
Contenu du fichier :
Fichier1_date1_argument1
Fichier2_date2_argument0
Fichier3_date3_argument2
Fichier4_date4_argument0
Fichier5_date5_argument3

Nom du fichier : ExtractionB
Contenu du fichier :
Fichier1_date1_argument1
Fichier2_date2_argument0
Fichier3_date3_argument2
Fichier4_date4_argument0

etc...

je souhaiterais faire un script qui parcourt ces fichier un part un et ligne par ligne.
il faudrait qu'il me renvoie le nom du fichier ainsi que la ligne où la valeur "argument" est : "argument0"
Ceci uniquement pour la dernière ligne
Il faut également controler et renvoyer la ligne lorsque la valeur "argument" est : "argument3"

Dans cet exemple, il devra me renvoyer:
ExtractionA;Fichier4_date4_argument0
ExtractionA;Fichier5_date5_argument3
ExtractionB;Fichier4_date4_argument0

Je suis débutant en script c'est pour cela que demande de l'aide.

Merci d'avance.
pio_killer est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 18/11/2008, 12h49   #2 (permalink)
Modérateur
 
Avatar de gangsoleil
 
Date d'inscription: mai 2004
Localisation: Grenoble
Âge: 28
Messages: 2 673
Par défaut

Bonjour,

La contrainte "Uniquement pour les dernières lignes" est extrèmement complexe à gérer, et demandera probablement un développement complexe et spécifique.

Sinon, sans cette contrainte, ce que tu cherches à faire se fait très simplement avec grep :

Code :
/usr/bin/egrep "argument0$|argument3$" mon_fichier.txt
__________________
Non au langage SMS

Modérateur "C", "Informatique Générale & Hardware" et "Windows, Système & Logiciels"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 20/11/2008, 08h58   #3 (permalink)
Membre du Club
 
Date d'inscription: février 2003
Âge: 29
Messages: 83
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
Par défaut

salut,

tu as droit à quel langage de script ? ksh, perl, ... ?

edit :

en ksh, si tu peux le faire en plusieurs commandes, tu peux te contenter de faire:

Code :
# grep argument0 ExtractionA |tail -1
# grep argument3 ExtractionA |tail -1
# grep argument0 ExtractionB |tail -1
# grep argument3 ExtractionB |tail -1
Ce qui peut éventuellement s'intégrer dans un script ksh avec une paire de boucles imbriquées :
Code :
#!/usr/bin/ksh

for i in `ls Extract*`
do
	for j in argument0 argument3
	do
		echo $i":"`grep $j $i | tail -1`
	done
done
edit²: explications très rapides
for i in `ls Extract*` => la variable i prend dans chaque boucle for une valeur qui provient de la commande ls Extract*, donc tour à tour ExtractionA, ExtractionB...
for j in argument0 argument3 => la variable j prend, pour chaque boucle de i (ie, pour chaque fichier Extraction*), les valeurs argument0 et argument3 tour à tour.
echo $i":"`grep $j $i | tail -1` => echo $i affiche le nom du fichier ":" pour afficher deux points après le nom ^^ `grep $j $i | tail -1` réalise les commandes que j'ai donné au début pour tous les couples $i $j et affiche le résultat à la suite du echo...

Dernière modification par Alek-C ; 20/11/2008 à 09h22
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 20/11/2008, 17h28   #4 (permalink)
Invité de passage
 
Date d'inscription: novembre 2008
Messages: 3
Par défaut

Je te remercie surtout pour tes explication qui sont très claires.
Je vais essayer dessuite.
pio_killer est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/11/2008, 10h13   #5 (permalink)
Invité de passage
 
Date d'inscription: novembre 2008
Messages: 3
Par défaut

Ca marche impec.

Je vous remercie pour votre aide à tous les 2 .

A bientôt
pio_killer est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 22/11/2008, 20h40   #6 (permalink)
Membre du Club
 
Date d'inscription: février 2003
Âge: 29
Messages: 83
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
Par défaut

Pas de problème

tu peux même cliquer sur le bouton [résolu] en bas si tu repasses par ici
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation
NEWS LINUX PROFESSIONNELFAQ LINUXTUTORIELS LINUXLIVRES LINUXLINUX TVUNIXGTK+QtAPACHE

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Autres systèmes > Unix > Solaris



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide