Une petite colle sur SED

Résolu
Poulpoul -  
 Poulpoul -
Bonjour,

j'aimerais pouvoir substituer dans un fichier fic de plus de 300 lignes,
la chaîne #FFFFFF par #F3F3F3F (code couleurs en html) et ceci une ligne sur deux,

via les tutos sur SED sur le forum (qui sont excellents par ailleurs), j'ai pu trouvé une solution qui serait :

grep "#FFFFFF" fic | sed '1~2 s/\#FFFFFF/\#F3F3F3/'
sous linux, aucun problème çà fonctionne nickel

cependant, je ne trouve pas la solution sous AIX 5.3/ksh

si quelqu'un aurait une idée ...

PS: impossible de déterminer la version de SED sous aix 5.3 ...

Merci
--
++
Poulpoul

3 réponses

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

    Essaye ça :
    grep "#FFFFFF" fic | sed 's/\#FFFFFF/\#F3F3F3/;n' 
    Mais bon même si ça marche, je doute que ce soit la solution idéale dans la mesure où tu sors d'un grep et que la modification se fasse sur la sortie standard et non dans le fichier ;-(
    0
  2. Poulpoul
     
    waouh facile pour lui,

    çà marche impec, du coup après j'ai redirigé cette commande vers un autre fichier
    encore merci.
    que fait exactement le ";n", cela équivaut à 1~2 ?
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      C'est expliqué dans la FAQ dans Les commandes basiques 1 :
      n next-line
      ligne suivante (intervalle d'adresse autorisée)
      
          * Remplace l'enregistrement courant dans l'espace de travail par la ligne suivante sans entamer 
             un nouveau cycle. La ligne remplacée quant à elle est envoyé sur la sortie standard.
               
                  echo -e "AAA\nBBB\nCCC\nDDD" | sed -n '/BBB/ {n;p;q}'
      0
  3. Poulpoul
     
    autant pour moi,
    merci pour l'info
    0