Pb shell avec sed ??

lilas -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
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. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    awk -F: '/^nouveau numero(RC=/ { $2+=19 ; print $0}' < fichier.txt
    0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    correction
    awk -F: '/^nouveau numero(RC=/ { $2+=19 } ; { print $0}' < fichier.txt
    0
    1. lilas
       
      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
      0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    ne pas oublier les espaces
    awk <espace> -F:<espace> '...
    0
    1. lilas
       
      j'ai bien mis les espaces mais j'ai toujours cette erreur
      0
  4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    là je sèche, -F majuscule ?
    sur quel système es-tu ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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
    0
  7. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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]$
    0
  8. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    ah oui, la ( dans l'expression !! awk sur W$ ne dit rien :-)
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Normal, W$ ne dit jamais rien du comment du pourquoi quand ça m*rdoie ;-))
      0