Problème script et commande awk

sajodia Messages postés 45 Statut Membre -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
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
Configuration: Windows XP
Internet Explorer 7.0

2 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
    1. sajodia
       
      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
    2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > sajodia
       
      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
    3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > sajodia
       
      Un méthode de substitution avec "sed" :
      echo $var1 | sed 's/.\{5\}\(.\{8\}\).*/\1/'
      ;-))
      0
    4. sajodia > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
       
      #!/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
    5. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > sajodia
       
      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
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
    1. sajodia
       
      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
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > sajodia
         
        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