Une petite colle sur SED

Résolu/Fermé
Utilisateur anonyme - 25 févr. 2009 à 11:10
 Utilisateur anonyme - 25 févr. 2009 à 12:33
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

3 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 894
25 févr. 2009 à 11:26
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
Utilisateur anonyme
25 févr. 2009 à 12:12
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
25 févr. 2009 à 12:20
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
Utilisateur anonyme
25 févr. 2009 à 12:33
autant pour moi,
merci pour l'info
0