![]() |
| 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é. | |||||||
|
|||||||
| Solaris Forum d'entraide sur le système Solaris. |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Invité de passage
![]() Date d'inscription: novembre 2008
Messages: 3
|
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. |
|
|
|
|
|
#2 (permalink) |
![]() Date d'inscription: mai 2004
Localisation: Grenoble
Âge: 28
Messages: 2 673
|
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 |
|
|
|
|
|
#3 (permalink) |
|
Membre du Club
![]() |
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 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 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 |
|
|
|
|
![]() |
![]() |
||
Traitement fichier unix solaris
|
||
| Outils de la discussion | |
|
|