Problème script et commande awk

Fermé
sajodia Messages postés 38 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 20 novembre 2010 - 27 mai 2008 à 15:14
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 30 mai 2008 à 14:29
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
A voir également:

2 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
27 mai 2008 à 16:37
Salut,
[trash]$ cat sajodia
02C8020060901148977I081020000
02C80200609061660002700070603
02C80200609083520002822080610
02C80200609100531003171010279

[trash]$ var1=$(sed -n '1p' sajodia)
[trash]$ var2=$(sed -n '$p' sajodia)

[trash]$ echo ${var1:5:8}
20060901

[trash]$ echo ${var2:5:8}
20060910

[trash]$
Bonne continuation ;-))
0
bonjour j'ai fait ce que vous m'avez indiqué mais j'ai rien comme message je ne sais pas prquoi ça ne marche pas
Quest ce qui indique le chemin ou se trouve mon fichier
!/bin/ksh
minute=`date +%M`
heure=`date +%H`
jour=`date +%d`
mois=`date +%B`
an=`date +%Y`

cat nomfichier
var1=$(sed -n '1p' nomfichier )
var2=$(sed -n '$p' nomfichier)
echo ${var1:5:8}
echo ${var2:5:8}
echo " datextrac: ${var1} ${var2}" | mail -s "Information " sarr.josephine@chu-amiens.fr
~


erreur
jose5.sh[11]: ${var1:5:8}: 0403-011 Substitution incorrecte pour cette commande.
Merci de m'aider
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895 > sajodia
28 mai 2008 à 11:02
Tout simplement parce que la syntaxe donnée est valable avec le shell bash et qu'elle ne marche pas avec le korn shell (ksh) ;-((

T'aurais du préciser le shell utilisé dans ton 1er message...

Désolé.
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895 > sajodia
28 mai 2008 à 11:08
Un méthode de substitution avec "sed" :
echo $var1 | sed 's/.\{5\}\(.\{8\}\).*/\1/'
;-))
0
sajodia > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
28 mai 2008 à 11:20
#!/bin/ksh
minute=`date +%M`
heure=`date +%H`
jour=`date +%d`
#mois=`date +%B`
#an=`date +%Y`
an=2007
mois=SEPTEMBRE
if [ -e /pappppp/mmmm/fil/Poto/$an/$mois -a -e monfichier ]
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 " sarr.josephine@chu-amiens.fr
fi


j'ai tjrs rien
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895 > sajodia
28 mai 2008 à 11:27
Il manque le nom du fichier dans la déclaration de ta variable !!!
Et puis la syntaxe est plutôt du genre de celle-ci :
var1=$(sed -nr '1 s/.{5}(.{8}).*/\1/p') fichier
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
28 mai 2008 à 11:51
Alors déjà, avant d'essayer d'envoyer un mail, s'assurer que le script fonctionne, et avant ça même, s'assurer que chaque syntaxe marche individuellement !!!

Essaye ça dans ton shell en remplaçant le nom du fichier "plop" par ton fichier :
$ cat plop
02C8020060901148977I081020000
02C80200609061660002700070603
02C80200609083520002822080610
02C80200609100531003171010279
$ var1=$(sed -n '1 s/.\{5\}\(.\{8\}\).*/\1/p' plop)
$ echo $var1
20060901
$ var2=$(sed -n '$ s/.\{5\}\(.\{8\}\).*/\1/p' plop)
$ echo $var2
20060910
$
;-))
0
bonjour,
j'est fait étape par étape
quand j'exécute la commande: sed -n '1 s/.\{5\}\(.\{8\}\).*/\1/p' monfichier
dans mon terminal mon terminal ça donne rien et je pense il faut déja que je regle ce problème avant de l'attribuer à une variable
Merci de m'aider
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895 > sajodia
30 mai 2008 à 14:29
Reprend mon exemple ci-dessus et affiche chaque étape comme je l'ai fait parce que mes pouvoirs de devin sont limités des fois ;-))
0