[sed] numéroter les substitutions
Résolu/Fermé
A voir également:
- [sed] numéroter les substitutions
- Comment numéroter les pages sur word - Guide
- Comment numéroter les chaînes tv ✓ - Forum Enceintes / HiFi
- Remplacez le mot sed par le mot mais dans tout le texte. combien de caractères contient le document suite à cette modification (en incluant les espaces) ? ✓ - Forum Shell
- Comment numéroter les lignes sur google doc - Forum LibreOffice / OpenOffice
- Numeroter page word a partir de la 4eme ✓ - Forum Word
7 réponses
mamiemando
Messages postés
33030
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
28 mars 2024
7 736
27 oct. 2005 à 09:57
27 oct. 2005 à 09:57
Et pourquoi ne pas faire un petit programme python (ou perl) avec une petite boucle incrementant le compteur à chaque substitution ?
http://docs.python.org/lib/re-syntax.html
Si tu tiens vraiment à le faire sans faire de script tu peux le faire en perl.
Bonne chance
http://docs.python.org/lib/re-syntax.html
Si tu tiens vraiment à le faire sans faire de script tu peux le faire en perl.
Bonne chance
c=1 && for i in pime pame poume ; do echo $i | sed "s/m/W$c/g" && c=$c+1 ; done
ou quelque chose dans le style ça doit passer
sauf que la variable dans sed je crois me rappeler que c'est une syntaxe speciale mais là j'ai pas de machine unix pour tester....
regarde le man page de sed pour voir comment envoyer le $c dans la commande interne de sed
ou quelque chose dans le style ça doit passer
sauf que la variable dans sed je crois me rappeler que c'est une syntaxe speciale mais là j'ai pas de machine unix pour tester....
regarde le man page de sed pour voir comment envoyer le $c dans la commande interne de sed
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
28 oct. 2005 à 18:52
28 oct. 2005 à 18:52
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 ;-)))
Utilisateur anonyme
28 oct. 2005 à 23:20
28 oct. 2005 à 23:20
non c'est pas tout à fait la voie que je cherche
je suis quasiment certain que le drapeau e de la commande s peut me permettre d'y arriver, je touche un peu le truc des doigts, je m'éloigne à nouveau, je reviens, mais pas moyen d'avoir le truc pile
à chaque fois, un truc cloche
ça doit se jouer en un cocktail inspiré de ça
cat zub |sed 's/^/echo /'| sed -re ':a;N;$!ba' -e 's/m/;let i++;echo -n "<G$i>"/egm'
cat zub |sed 's/^/echo -n /'| sed -re ':a;N;$!ba' -e 's/m(.*)$/;let i++;echo "<G$i>\1"/egm'
cat zub |sed 's/^/echo -n /'| sed -re ':a;N;$!ba' -e 's/m([^m]*)$/;let i++;echo "<G$i>\1"/egm'
à un moment j'ai presque tenu mon affaire avec ça
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 :(
je suis quasiment certain que le drapeau e de la commande s peut me permettre d'y arriver, je touche un peu le truc des doigts, je m'éloigne à nouveau, je reviens, mais pas moyen d'avoir le truc pile
à chaque fois, un truc cloche
ça doit se jouer en un cocktail inspiré de ça
cat zub |sed 's/^/echo /'| sed -re ':a;N;$!ba' -e 's/m/;let i++;echo -n "<G$i>"/egm'
cat zub |sed 's/^/echo -n /'| sed -re ':a;N;$!ba' -e 's/m(.*)$/;let i++;echo "<G$i>\1"/egm'
cat zub |sed 's/^/echo -n /'| sed -re ':a;N;$!ba' -e 's/m([^m]*)$/;let i++;echo "<G$i>\1"/egm'
à un moment j'ai presque tenu mon affaire avec ça
$ 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 :(
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
28 oct. 2005 à 23:27
28 oct. 2005 à 23:27
mais j'arrive pas à croire qu'il n'existe aucune séquence permettant de récupérer le numéro de la substitution. Sinon ben c'est à graver au burin dans la toudouliste de sed :)
crabs
Messages postés
908
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
3 août 2008
506
28 oct. 2005 à 23:46
28 oct. 2005 à 23:46
Salut,
Passe en PERL, exemple cache_lien.pl
Utilisation :
Passe en PERL, exemple cache_lien.pl
#!/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
je crois que je vais faire ça, j'ai assez perdu de temps en obstinations térile
d'autant que ça se passe de commentaire comme le passage à un langage un peu plus adapté simplifie manifestement la démarche, le script est simple et clair
merci à tous :)
(reste que ça de cloue le tru qu'il n'y ait pas de possibilité de numérotation des substitutions dans sed... oui je sais je radote un poil :D)
d'autant que ça se passe de commentaire comme le passage à un langage un peu plus adapté simplifie manifestement la démarche, le script est simple et clair
merci à tous :)
(reste que ça de cloue le tru qu'il n'y ait pas de possibilité de numérotation des substitutions dans sed... oui je sais je radote un poil :D)
Utilisateur anonyme
29 oct. 2005 à 18:17
29 oct. 2005 à 18:17
je suis en train de me rafraîchir un peu la mémoire avec perl et faut bien admettre, j'ai vraiment merdé :(
je me rends compte que mon acharnement, même si j'ai appris quelques trucs, a été une énorme perte de temps. Comme quoi on peut arriver à ses fins (j'ai fait pas mal de scripts bash ces jours ci et à part celui-ci, les autres me donnent satisfaction), et malgré tout avoir échoué, parce qu'on s'est trompé d'outil.
je me rends compte que mon acharnement, même si j'ai appris quelques trucs, a été une énorme perte de temps. Comme quoi on peut arriver à ses fins (j'ai fait pas mal de scripts bash ces jours ci et à part celui-ci, les autres me donnent satisfaction), et malgré tout avoir échoué, parce qu'on s'est trompé d'outil.
28 oct. 2005 à 04:16
le problème c'est qu'en fait je pars toujours de tout petits besoins, pour lesquels je fais un petit script bash, puis l'envie me vient de le fignoler ça et là.
C'est au départ que j'aurais dû adopter perl ou, en effet, python, mais je ne me sentais pas trop l'envie ni le temps de me familiariser avec un langage (ou de me le rappeler, pour perl, vu que je ne l'ai utilisé véritablement qu'il y a facilement deux ou trois ans) pour des besoins vraiment limités.
bon, si la solution avait pu s'insérer dans ce que j'ai déjà fait, ça m'aurait arrangé, mais je n'en ai pas assez besoin pour refuser de le sacrifier
cela dit, si je n'arrête pas vite fait de pondre des scripts, il va vraiment falloir que je passe à autre chose (et python est un bon candidat)
merci pour ta réponse