Addition (+)

rojina2903 Messages postés 97 Date d'inscription   Statut Membre -  
rojina2903 Messages postés 97 Date d'inscription   Statut Membre -
Bonjour,

je bloque sur l'une des notion basique d'unix c 'est les operateurs arithmetiques

voici un bout du code:

hexapost_seq=$(sed -n '1 s/.*=\(.*\)/\1/p' $mediapost)
hexapost_seq_maj=`expr $hexapost_seq + 1`
`sed "/HEXAPOST_SEQ/ s/:digit:/${hexapost_seq_maj}/" $mediapost>fich.tmp && mv -f fich.tmp $mediapost`

dans mon fichier hexapost_seq=12

quand j'execute pour la premiere fois j'obtiens
hexapost_seq=132

et quand j'execute pour la deuxième fois j'obtiens:
hexapost_seq=13332

et j'arrive pas à voir ou est l'erreur

merci d'avance pour votre aide

8 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Remplace :
    s/[ [:digit:]]/${hexapost_seq_maj}/
    par :
    s/[0-9]\+/${hexapost_seq_maj}/
    et ça devrait le faire ;-))
    0
    1. rojina2903 Messages postés 97 Date d'inscription   Statut Membre 13
       
      salut jipicy

      j'ai modifié la ligne de commande comme vous m'avez expliqué.

      je met dans mon fichier

      hexapost_seq=13

      et j'execute et il m'affiche 14 donc ça marche mais le script ne modifie plus le fichier normalement il doit remplacer 13 par 14 dans le fichier mediapost


      merci pour votre aide
      0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Ben si ça marchait avant, ça devrait marcher aussi, je n'ai modifié que la syntaxe de "sed", pas le reste (redirection et syntaxe bash).

    Quelle version de "sed" ? Si supérieure à 4.0.5 il existe l'option "-i" qui modifie le fichier directement...
    0
  3. rojina2903 Messages postés 97 Date d'inscription   Statut Membre 13
     
    Oui normalement ça doit marcher peut etre que j'ai touché à quelque chose

    je peux pas utiliser l'option "-i"

    ci dessous un bout du script

    #!/usr/bin/ksh

    path_file_mediapost=../fichier_maj

    mediapost=$path_file_mediapost/mediapost.txt

    hexapost_seq=$(sed -n '1 s/.*=\(.*\)/\1/p' $mediapost)

    hexapost_seq_maj=`expr $hexapost_seq + 1`

    echo $hexapost_seq
    echo $hexapost_seq_maj

    `sed "/HEXAPOST_SEQ/ s/[0-9]\+/${hexapost_seq_maj}/" $mediapost>fich.tmp && mv -f fich.tmp $mediapost`
    0
  4. rojina2903 Messages postés 97 Date d'inscription   Statut Membre 13
     
    bonjour

    up puisque je bloque toujours

    merci
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Et sans la redirection dans un fichier, est-ce que l'affichage à l'écran donne le résultat espéré ?
    0
  7. rojina2903 Messages postés 97 Date d'inscription   Statut Membre 13
     
    salut
    non, on m'affiche un message d'erreur : sed : Function HEXAPOST_SEQ/ s/[0-9]\+/14/ cannot be parsed
    0
  8. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Alors essaie avec cette syntaxe alors :
    s/[0-9][0-9]*/$var/
    ;-))
    0
  9. rojina2903 Messages postés 97 Date d'inscription   Statut Membre 13
     
    ça marche

    merci de me sauver la vie à quaque fois :)
    0