Remplacer une ligne par une autre

Résolu/Fermé
wapette21 - 18 juil. 2008 à 16:07
 wapette21 - 18 juil. 2008 à 17:13
Bonjour,

Je souhaite modifier un fichier de config via un script ksh, seulement je rencontre quelque
problème.

je fait un cat -n mon_fichier.cfg et j'obtiens :

1 # Fichier de configuration contenant les jours non ouvrables de la société (Pentecôte,
2 # jours fériés), les dates sont au format JJ/MM/AAAA.
3 14/07/2006
4 17/07/2006
5 18/07/2006
6 15/08/2006
7 01/01/2007
8 17/01/2008
9 24/01/2008
10 17/07/2008
11 18/07/2008

maintenant grâce au numéro de ligne je veux modifié une ligne par exemple la 4.

je fait donc sed "/4/c 17/07/2006\"g\" toto" mon_fichier.txt

résultat -> sed: command garbled: /4/c 17/07/2006"g" toto

quelqu'un a une idée.

Merci a tous.

6 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 895
18 juil. 2008 à 16:28
Salut,

Pourquoi faire compliqué ?
sed '4 c 17/07/2006"g" toto'
ou
sed '4 s|.*|&"g" toto|'
;-))
0
Salut,

La premier commande ne fonctionne pas : sed '4 c 17/07/2006"g" toto' mon_fichier.cfg
sed: command garbled: 4 c 17/07/2006"g" toto

et la deuxieme ne remplace pas ma ligne : sed '4 s|.*|&"g" toto|' mon_fichier.cfg
# Fichier de configuration contenant les jours non ouvrables de la société (Pentecôte,
# jours fériés), les dates sont au format JJ/MM/AAAA.
14/07/2006
17/07/2006"g" toto
18/07/2006
15/08/2006
01/01/2007
17/01/2008
24/01/2008
17/07/2008
18/07/2008

Merci de vos réponse.
0
Bonjour,

Difficile...

On ne sait pas où vous voulez changer (la quatrième ligne, les lignes contenant un 4, les lignes débutant par un 4), on ne sait pas ce que vous voulez changer, et on ne sait pas ce que vous voulez mettre à la place (toto est-il le fichier qui contient la nouvelle date ?)

Entre autres on ne sait pas pourquoi vous n'êtes pas satisfait des propositions faites.

Manu
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 895
18 juil. 2008 à 16:56
[tmpfs]$ cat fichier.txt
# Fichier de configuration contenant les jours non ouvrables de la société (Pentecôte,
# jours fériés), les dates sont au format JJ/MM/AAAA.
14/07/2006
17/07/2006
18/07/2006
15/08/2006
01/01/2007
17/01/2008
24/01/2008
17/07/2008
18/07/2008

[tmpfs]$ sed '4 c 17/07/2006"g" toto' fichier.txt
# Fichier de configuration contenant les jours non ouvrables de la société (Pentecôte,
# jours fériés), les dates sont au format JJ/MM/AAAA.
14/07/2006
17/07/2006"g" toto
18/07/2006
15/08/2006
01/01/2007
17/01/2008
24/01/2008
17/07/2008
18/07/2008

[tmpfs]$ sed '4 s|.*|&"g" toto|' fichier.txt
# Fichier de configuration contenant les jours non ouvrables de la société (Pentecôte,
# jours fériés), les dates sont au format JJ/MM/AAAA.
14/07/2006
17/07/2006"g" toto
18/07/2006
15/08/2006
01/01/2007
17/01/2008
24/01/2008
17/07/2008
18/07/2008
[tmpfs]$  
;-))
0
Je suis désoler mais je ne comprend pas, je me suis peut etre mal expliquer mon fichier.txt contient :
# Fichier de configuration contenant les jours non ouvrables de la société (Pentecôte,
# jours fériés), les dates sont au format JJ/MM/AAAA.
14/07/2006
17/07/2006
18/07/2006
15/08/2006
01/01/2007
17/01/2008
24/01/2008
17/07/2008
18/07/2008

ce que je souhaite c'est pourvoir modifier certaine date en les remplacent exemple :
# Fichier de configuration contenant les jours non ouvrables de la société (Pentecôte,
# jours fériés), les dates sont au format JJ/MM/AAAA.
14/07/2006
toto
18/07/2006
15/08/2006
01/01/2007
17/01/2008
24/01/2008
17/07/2008
18/07/2008

J'ai remplacer ma 4 ligne par toto mais les commande ci dessus ne fonctionne pas.

Pour information je suis sous solaris 9.

Merci
0
Rebonjour

sed '4 s!17/07/2006!toto!'

Manu
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 895
18 juil. 2008 à 17:07
Désolé j'avais mal compris :
sed '4 c toto'
ou
sed '4 s|.*|toto|'
;-))
0
Super merci a tout les deux vaux deux solutions fonctionne

Merci

a bientôt
0