|
|
|
|
Bonjour,
voilà, tout est dans le titre. Quelqu'un sait-il comment numéroter les substitutions dans une expression s///g ?
par exemple obtenir à partir de
echo pime pame poume | sed 's/m/W<le_machin>/g'
une sortie comme
piW1e paW2e pouW3e
où <le_machin> est justement la séquence d'échappement ou le bidule quelconque que j'ignore et qui permet cette numérotation
je tiens à sed parce qu'en l'occurrence c'est une substitution sur un espace motif multiligne (et ça je ne sais pas faire avec d'autres outils)
merci lézami
gnagnagna
Et pourquoi ne pas faire un petit programme python (ou perl) avec une petite boucle incrementant le compteur à chaque substitution ?
|
C=1 && for i in pime pame poume ; do echo $i | sed "s/m/W$c/g" && c=$c+1 ; done
|
Tè la commande de "gregregre" revue pour l'incrémentation : [jp@Mandrake tmpfs]$ cat fich pime pame poume puma pomu pima pome pyme plume tomahawk tomate tomette thomas [jp@Mandrake tmpfs]$ c=1 && for i in `cat fich`; do echo $i | sed "s/m/W$c/g" && c=$(expr $c + 1); done piW1e paW2e pouW3e puW4a poW5u piW6a poW7e pyW8e pluW9e toW10ahawk toW11ate toW12ette thoW13as [jp@Mandrake tmpfs]$A marche ;-))) Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |
Non c'est pas tout à fait la voie que je cherche
$ cat doubidule #!/bin/sh sed \ -e "s/'/\\\'/g" \ -e "s/(/\\\(/g" \ -e "s/)/\\\)/g" \ -e 's/"/\\\"/g' \ -e 's/\\$/./g' \ | sed -r \ -e ':a;N;$!ba' \ -e 's#https?://[^ \n]+($| )#LIEN\1#gm' \ -e 's/^/:::/gm' \ -e 's#(^|LIEN)#true;let i++;echo -n "[\1 $i]"#egm' \ | sed -r \ -e 's/true//g' \ -e 's/\[ [0-9]+\]:::/\n/g' \ -e 's/\[LIEN [0-9]+\]/^[[41m&^[[49m/g' $ cat zob on trouve sur http://www.rotten.com le pire ramassis de résidus putrides de sous-chiottes, mais sur http://www.caramail.com ou sur http://www.msn.com par exemple, ça rivalise. Par contre, sur http://www.c-est-la-fete-du-slip-en-charente-poitou-vendee.com on trouve vraiment de quoi se distraire le bulbe ainsi que quelques bonnes recette de crevettes qui rivalisent avec http://www.bonnesoupe.fr c'est presque aussi bon que "Chez Paulette". http://www.bolino.com par contre est vraiment dégueulasse (c'est terrible) $ cat zob | ./doubidule on trouve sur [LIEN 2] le pire ramassis de résidus putrides de sous-chiottes, mais sur [LIEN 4] ou sur [LIEN 5] par exemple, ça rivalise. Par contre, sur [LIEN 8] on trouve vraiment de quoi se distraire le bulbe ainsi que quelques bonnes recette de crevettes qui rivalisent avec [LIEN 11] c'est presque aussi bon que "Chez Paulette". [LIEN 14] par contre est vraiment dégueulasse (c'est terrible) avec les zolies couleurs et tout. Bon j'ai bossé comme un goret, insérer des trucs pour les enlever ensuite c'est dégueulasse. Mais bon, après les affichages pourraves de mes commandes du dessus j'étais content, jusqu'à ce que d'un coup je me rappelle (en le voyant) que pour contourner un problème j'avais aussi substitué le caractère de début de ligne (le flag e est vraiment casse-burnasses) et que je devais maintenant m'occuper de ça, vu que chaque ligne incrémente le compteur, en l'état bon, c'est juste pour un preview de mail donc je crois VRAIMENT que je vais arrêter de me bouffer du temps là dessus :D C'est typique, ça te prends comme ça, tu veux faire un truc minuscule genre qui fait pinpon guili et paf, tu te retrouves à coder deux semaines en bash pour que le guili débeugler le bras automatique qui te chatouille quand le machin fait guili chuis malade :( gnagnagna |
Salut,
#!/usr/bin/perl
$i=1;
while ( $ligne = <STDIN> )
{
$_ = $ligne ; $fin = $ligne ;
while ( /https?:\S*/ )
{
$debut = $` ;
$fin = $' ;
print $debut,"[LIEN ",$i,"]" ;
$_ = $fin ;
$i++;
}
print $fin ;
}
Utilisation : cmd> chmod +x cache_lien.pl cmd> cat zob | ./cache_lien.pl..., I think Slackware sounds better than 'Microsoft,' -- Patrick Volkerding - founder and maintainer of Slackware
|
Je suis en train de me rafraîchir un peu la mémoire avec perl et faut bien admettre, j'ai vraiment merdé :(
|