Addition (+)

Fermé
rojina2903 Messages postés 96 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 5 juin 2009 - 24 juil. 2008 à 15:53
rojina2903 Messages postés 96 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 5 juin 2009 - 28 juil. 2008 à 11:58
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
A voir également:

8 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 896
24 juil. 2008 à 16:51
Salut,

Remplace :
s/[ [:digit:]]/${hexapost_seq_maj}/
par :
s/[0-9]\+/${hexapost_seq_maj}/
et ça devrait le faire ;-))
0
rojina2903 Messages postés 96 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 5 juin 2009 13
25 juil. 2008 à 09:21
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
25 juil. 2008 à 09:33
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
rojina2903 Messages postés 96 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 5 juin 2009 13
25 juil. 2008 à 09:59
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
rojina2903 Messages postés 96 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 5 juin 2009 13
28 juil. 2008 à 09:36
bonjour

up puisque je bloque toujours

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
28 juil. 2008 à 10:17
Et sans la redirection dans un fichier, est-ce que l'affichage à l'écran donne le résultat espéré ?
0
rojina2903 Messages postés 96 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 5 juin 2009 13
28 juil. 2008 à 10:36
salut
non, on m'affiche un message d'erreur : sed : Function HEXAPOST_SEQ/ s/[0-9]\+/14/ cannot be parsed
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 896
28 juil. 2008 à 11:32
Alors essaie avec cette syntaxe alors :
s/[0-9][0-9]*/$var/
;-))
0
rojina2903 Messages postés 96 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 5 juin 2009 13
28 juil. 2008 à 11:58
ça marche

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