Remplacer une ligne par une autre [Résolu/Fermé]

Signaler
-
 wapette21 -
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

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 871
Salut,

Pourquoi faire compliqué ?
sed '4 c 17/07/2006"g" toto'
ou
sed '4 s|.*|&"g" toto|'
;-))
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.
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
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 871
[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]$  
;-))
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
Rebonjour

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

Manu
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 871
Désolé j'avais mal compris :
sed '4 c toto'
ou
sed '4 s|.*|toto|'
;-))
Super merci a tout les deux vaux deux solutions fonctionne

Merci

a bientôt