|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Inscription : avril 2008 Messages : 140 ![]() |
Bonjour,
dans le répertoire mami/tot/jpg j'ai 6 fichiers(A,B,c,d,e,f) et dans le fichier d voila ce que j'ai par exemple ce genre de lignes plusieurs fois: 02C8020060901148977I081020000 02C80200609061660002700070603 02C80200609083520002822080610 02C80200609100531003171010279 je veux recupérer dans 2variables var1 et var2 (les elements à parir du 6ème element au 13 element) qui signifie année ,le mois et le jour. sachant que var1 est egaleà la plus petite date(date avant) ,et var2 la plus grande date : var1=20060901 var2=20060910 minute=`date +%M` heure=`date +%H` jour=`date +%d` mois=`date +%B` an=`date +%Y` mois_chiffre=`date +%m` VAR="CUBE_`date +%B`" #export an mois jour heure minute interface="PH7" if [ ! -e mami/tot/jpg ] [! -e fichier d] then var1=`vi fichier d | tail -1 | head -1 | awk '{ print $6, $7, $8,...,$13}' ` var2=`vi fichier d | tail -1 | head -1 | awk '{ print $6, $7, $8,...,$13}' ` echo " ${var1} ,${var2} $an " | mail -s "Information sur ${var} du $jour $mois $an" mamamamamma@chut.fr fi aidez moi svp je ne sais pas prquoi ça ne marche pas quand j'exécute j'ai rien comme message |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 417 ![]() |
Salut !
J'ai pas regardé tout ton code, awk ne marche pas ainsi : awk te parse des colonnes en fonction d'un séparteur. Si tu veux travailler sur des position, tu peux utiliser "cut -c" "cut -c6-13 MonFichier" te renvoie les caractères "numérotés" de 6 à 13 pour chaque ligne. Bon courage. |
|
00
|
|
|
#3 | ||
|
Membre éprouvé
![]() Ingénieur systèmes et réseaux Inscription : août 2007 Messages : 508 ![]() |
Ca marche pas?
Une chose très pratique en shell pour tester si ta commande a réussi, tu tapes $? est le code de retour de ta commande. S'il vaut zero, c'est que la commande a réussi et différent zero dans le cas contraire. Et à mon avis, c'est au niveau de la cmd awk que ca marche vu que t'as pas indiqué de Field Separator avec l'option -F. Donc je te conseille d'utiliser la commande sed. D'apres ce que j'ai compris, tu veux récupérer les dates qui se trouvent sur la première et la dernière ligne du fichier. Je te donne la réponse pour var1: Code :
|
||
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 417 ![]() |
Petite remarque :
Je pense qu'il faut échapper un certain nombre de caractères dans tes expressions : Code :
|
||
|
00
|
|
|
#5 | |||||||
|
Membre Expert
![]() |
Citation:
Code :
Code :
|
|||||||
|
|
00
|
|
|
#6 | |||
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 417 ![]() |
Citation:
(Ah, ce que j'aime être lourd !) |
|||
|
00
|
|
|
#7 |
|
Membre à l'essai
![]() Inscription : avril 2008 Messages : 140 ![]() |
j'ai aissayé ce que vous m'avez dit mais ça ne marche pas
|
|
|
00
|
|
|
#8 |
|
Membre à l'essai
![]() Inscription : avril 2008 Messages : 140 ![]() |
var1 n'est obligatoirement pas la date de la 1ère ligne la date la plus petite qui peut etre à n'importe quelle ligne ainsi que var2.
merci de m'aidez |
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 417 ![]() |
awk te permet de réaliser des opérations sur chaque ligne.
Tape "man awk", c'est utile. Tu vois l'algorithme basique te permettant de connaître le min et le max de manière itérative (imagine que tu lis le fichier ou l'entrée formattée dans une boucle FOR) ? Ben c'est la même, en utilisant les clauses BEGIN et END de awk. (je te laisse te documenter sur le sujet) |
|
00
|
|
|
#10 | |||||
|
Membre éprouvé
![]() Ingénieur systèmes et réseaux Inscription : août 2007 Messages : 508 ![]() |
Citation:
![]() .
|
|||||
|
00
|
|
|
#11 | |||
|
Membre éprouvé
![]() Ingénieur systèmes et réseaux Inscription : août 2007 Messages : 508 ![]() |
Citation:
J'ai testé avant et j'ai vu que ca marchait. |
|||
|
00
|
|
|
#12 |
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 417 ![]() |
Ok, désolé.
Je ne dispose pas de l'option -r... ça doit être une question de version de Shell... |
|
00
|
|
|
#13 |
|
Membre à l'essai
![]() Inscription : avril 2008 Messages : 140 ![]() |
voila ce que j'ai fait
!/bin/ksh minute=`date +%M` heure=`date +%H` jour=`date +%d` #mois=`date +%B` #an=`date +%Y` an=2007 mois=SEPTEMBRE if [ -e /sextantapp/m1/fic/PH7/$an/$mois -a -e fichier d ] then var1= sed -r -e 's/ [0-9]\{2\}[A-Z][0-9]\{2\}\([0-9]\{8\}\).*/\1/p' var2= echo " datextrac: ${var1}" | mail -s "Information " siiiiiiiii@yahoo.fr fi mais j'ai rien à l'envoi de mail |
|
|
00
|
|
|
#14 | |
|
Membre éprouvé
![]() Ingénieur systèmes et réseaux Inscription : août 2007 Messages : 508 ![]() |
Citation:
|
|
|
00
|
|
|
#15 |
|
Membre à l'essai
![]() Inscription : avril 2008 Messages : 140 ![]() |
c'est pour avoir un envoi de mail dans ma boiteafin que je puisse voir les valeurs de var1 et var2,vérifier si c'est juste.
je l'ai déja utilisé plusieurs fois |
|
|
00
|
|
|
#16 | |
|
Membre éprouvé
![]() Ingénieur systèmes et réseaux Inscription : août 2007 Messages : 508 ![]() |
Citation:
var1 et var2 sont vides. Sur quoi appliques-tu appliques ta cmd sed pour avoir la valeur de var1? |
|
|
00
|
|
|
#17 |
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 417 ![]() |
Salut !
Teste toujours séparément : Essaie ton sed à part (simplement sur ton terminal), et vérifie qu'il te renvoie ce que tu attends. sed -n '1 s/.\{5\}\(.\{8\}\).*/\1/p' fichierd Ensuite, ton problème vient au moins du fait que tu demandes la valeur d'une variable : $(sed -n '1 s/.\{5\}\(.\{8\}\).*/\1/p' fichierd ) Essaie la mêle chose en enlevant le $ |
|
00
|
|
|
#18 |
|
Membre à l'essai
![]() Inscription : avril 2008 Messages : 140 ![]() |
Salut
j'ai testé étape par étape comme vous m'avez dit sur mon terminal mais à chaque fois i je n'ai rien. je sais pas d'ou vient le problème . |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com