Pb shell avec sed ??

Fermé
lilas - 12 sept. 2008 à 15:09
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 13 sept. 2008 à 12:02
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...

7 réponses

dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
12 sept. 2008 à 15:17
hello
awk -F: '/^nouveau numero(RC=/ { $2+=19 ; print $0}' < fichier.txt
0
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
12 sept. 2008 à 16:42
hello
correction
awk -F: '/^nouveau numero(RC=/ { $2+=19 } ; { print $0}' < fichier.txt
0
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
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
12 sept. 2008 à 16:54
ne pas oublier les espaces
awk <espace> -F:<espace> '...
0
j'ai bien mis les espaces mais j'ai toujours cette erreur
0
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
12 sept. 2008 à 17:14
là je sèche, -F majuscule ?
sur quel système es-tu ?
0

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

Posez votre question
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
13 sept. 2008 à 11:48
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
13 sept. 2008 à 11:56
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
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
13 sept. 2008 à 12:00
ah oui, la ( dans l'expression !! awk sur W$ ne dit rien :-)
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 897
13 sept. 2008 à 12:02
Normal, W$ ne dit jamais rien du comment du pourquoi quand ça m*rdoie ;-))
0