Remplacer une ligne par une autre

Résolu
wapette21 -  
 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.
Configuration: Windows XP
Firefox 3.0

6 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Pourquoi faire compliqué ?
    sed '4 c 17/07/2006"g" toto'
    ou
    sed '4 s|.*|&"g" toto|'
    ;-))
    0
  2. wapette21
     
    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
    1. Manu
       
      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
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    [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
  4. wapette21
     
    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
    1. Manu
       
      Rebonjour

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

      Manu
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Désolé j'avais mal compris :
    sed '4 c toto'
    ou
    sed '4 s|.*|toto|'
    ;-))
    0
  7. wapette21
     
    Super merci a tout les deux vaux deux solutions fonctionne

    Merci

    a bientôt
    0