Pb shell avec sed ??

Bonjour,
je dois modifier des lignes d'un fichier de la manière suivante:

le fichier initial est de la forme suivante:
fichier de DIALOGUE MAX2D du 12/ 9/2008 11:53:27
style : 2
pour la suite, faire RC:
Option(s).......:2
Option(s) (RC=0).......:6
Nom du Maillage (RC = mailg, 0=aucun):C1B
Votre choix (RC=0):1
numero du groupe:1
Validation (O/N,RC=oui):
nouveau numero(RC=20):39 -------------------> il faut modifier juste le 39 en 39+19, soit 58
Sauvegarde maillage(RC=oui):
(RC = C1B, 0=aucun):
on le met a jour(O/N,RC=oui):N
(RC = C1B, 0=aucun):C3B
Option(s) (RC=0).......:6
Nom du Maillage (RC = C2B, 0=aucun):
Votre choix (RC=0):1
numero du groupe:2
Validation (O/N,RC=oui):
nouveau numero(RC=1):40 ----------------------------------> il faut modifier le 40 en 59
Validation (O/N,RC=oui):
Sauvegarde maillage(RC=oui):
(RC = titi, 0=aucun):
on le met a jour(O/N,RC=oui):
Option(s) (RC=0).......:6
Nom du Maillage (RC = C2B, 0=aucun):
Votre choix (RC=0):1
numero du groupe:3
Validation (O/N,RC=oui):
nouveau numero(RC=1):41 -------------------------------------> il faut modifier le 41 en 60

etc..
En fait, à chaque ligne de la forme "nouveau numero(RC=): " il faut modifier le nombre qui suit en lui ajoutant 19.

Comment faire?? est-ce que quelqu'un a une idée??? je suis bloquée...
Configuration: Windows XP
Internet Explorer 6.0

7 réponses

  1. Contributeur
    hello
    awk -F: '/^nouveau numero(RC=/ { $2+=19 ; print $0}' < fichier.txt
    1. Contributeur
      hello
      correction
      awk -F: '/^nouveau numero(RC=/ { $2+=19 } ; { print $0}' < fichier.txt
      1. j'ai copié exactement cette ligne mais ça ne marche pas. C'est la seule chose à écrire pour modifier toutes les lignes du fichier??
        Quand je lance le script, j'ai le message: awk: syntax error near line 1
        awk: bailing out near line 1
        Si tu as des infos, je suis preneuse...
        je suis débutante en shell
    2. Contributeur
      ne pas oublier les espaces
      awk <espace> -F:<espace> '...
      1. j'ai bien mis les espaces mais j'ai toujours cette erreur
    3. Contributeur
      là je sèche, -F majuscule ?
      sur quel système es-tu ?
      1. Contributeur
        essayons par petits pas, quand se produit l'erreur?

        awk '{print $0}' < fichier.txt
        awk -F: '{print $0}' < fichier.txt
        awk -F: '/^nouveau numero(RC=/ {print $0}' < fichier.txt
        awk -F: '/^nouveau numero(RC=/ {$2+=19 ; print $0}' < fichier.txt
        awk -F: '/^nouveau numero(RC=/ {$2+=19} ; {print $0}' < fichier.txt
        1. Modérateur
          Salut vous deux,

          dubcek j'avais essayé ta syntaxe hier et voilà ce que j'avais eu comme erreur :
          [tmpfs]$ awk -F: '/^nouveau numero(RC=/ { $2+=19 ; print $0}' < lilas
          awk: Fatal: Non appariement de ( ou \(: /^nouveau numero(RC=/

          En enlevant la parenthèse et ce qui suit, voilà ce que j'obtiens :
          [tmpfs]$ awk -F: '/^nouveau numero/ { $2+=19 ; print $0}' < lilas
          nouveau numero(RC=20) 58
          nouveau numero(RC=1) 59
          nouveau numero(RC=1) 60
          [tmpfs]$

          Enfin, avec cette syntaxe, chez moi ça passe :
          [tmpfs]$ awk 'BEGIN { FS=":";OFS=":"} { if ($1 ~ /^nouveau numero/) $2+=19; print $0}' lilas
          fichier de DIALOGUE MAX2D du 12/ 9/2008 11:53:27
          style : 2
          pour la suite, faire RC:
          Option(s).......:2
          Option(s) (RC=0).......:6
          Nom du Maillage (RC = mailg, 0=aucun):C1B
          Votre choix (RC=0):1
          numero du groupe:1
          Validation (O/N,RC=oui):
          nouveau numero(RC=20):58
          Sauvegarde maillage(RC=oui):
          (RC = C1B, 0=aucun):
          on le met a jour(O/N,RC=oui):N
          (RC = C1B, 0=aucun):C3B
          Option(s) (RC=0).......:6
          Nom du Maillage (RC = C2B, 0=aucun):
          Votre choix (RC=0):1
          numero du groupe:2
          Validation (O/N,RC=oui):
          nouveau numero(RC=1):59
          Validation (O/N,RC=oui):
          Sauvegarde maillage(RC=oui):
          (RC = titi, 0=aucun):
          on le met a jour(O/N,RC=oui):
          Option(s) (RC=0).......:6
          Nom du Maillage (RC = C2B, 0=aucun):
          Votre choix (RC=0):1
          numero du groupe:3
          Validation (O/N,RC=oui):
          nouveau numero(RC=1):60
          [tmpfs]$
          1. Contributeur
            ah oui, la ( dans l'expression !! awk sur W$ ne dit rien :-)
            1. Modérateur
              Normal, W$ ne dit jamais rien du comment du pourquoi quand ça m*rdoie ;-))