|
Bas de page | |
---|---|
Auteur | Sujet : Sed, remplacer les n premières occurrences |
![]() Publicité | Posté le 07-02-2011 à 22:47:22 ![]() ![]() |
ptitchep | Personne? --------------- deluser --remove-home ptitchep |
billgatesanonym | Une solution serait de faire une boucle jusqu'à ce que le nombre de remplacement soit atteint ou que la fin de fichier soit atteinte.
Ou bien on peut utiliser awk ou gawk ou nawk.
|
ptitchep | Merci,
--------------- deluser --remove-home ptitchep |
Nukolau | Je viens de jeter un oeil au man, et le chiffre qu'on peux mettre à la fin c'est pour remplacer la n-ième occurrence, pas le nombre d'occurrences à remplacer. |
gilou ModérateurModosaurus Rex | C'est très probablement faisable en sed, mais ça demande un niveau d'expertise que j'ai eu il y a bien longtemps, mais que je n'ai plus depuis que j'utilise perl, parce que ça doit être assez complexe à écrire en sed et plus simple en perl. Testé ainsi:
>perl test.pl Bon ensuite l'intérêt, c'est qu'on peut en faire une procédure, plus modulaire et réemployable:
>perl test.pl A+, Message édité par gilou le 10-02-2011 à 13:25:06 --------------- There's more than what can be linked! -- Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻ |
art_dupond je suis neuneu... oui oui !! | Je ne sais pas si c'est "bien" mais
--------------- oui oui |
efimo | Essais ça:
Message édité par efimo le 10-02-2011 à 16:38:13 --------------- FeedBack |
gilou ModérateurModosaurus Rex | Oui, mais tout ça répond pas a sa question initiale qui est si j'ai bien compris:
--------------- There's more than what can be linked! -- Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻ |
ptitchep | Merci à tous,
--------------- deluser --remove-home ptitchep |
![]() Publicité | Posté le 10-02-2011 à 15:33:12 ![]() ![]() |
gilou ModérateurModosaurus Rex |
Pour cela, il suffit de remplacer n occurrences de a par n-1 occurrences de b, en perl, le plus simple serait ceci: Pour le 1, en sed, cela se transpose a priori ainsi: s/\(a\)\(\1*\)/\2/g et pour le 2, s/a/b/g On voit tout de suite aussi que pour remplacer n occurrences de a par n-1 occurrences de b, il va suffire de faire echo "**********" | sed ':loop p;s/\(\*\)\(\1*\)/ \2/g;t loop;:pool p;s/\( \)\(\1*\)/*\2/;t pool;d' Message édité par gilou le 12-02-2011 à 13:53:19 --------------- There's more than what can be linked! -- Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻ |
ptitchep | Merci, j'ai appris pas mal sur sed du coup.
--------------- deluser --remove-home ptitchep |
Sujets relatifs | |
---|---|
[BATCH/DOS] rechercher/remplacer un ensemble de ligne par d'autres | [Batch] Script de comptage du nombre d'occurrences dans un fichier |
Js : remplacer du texte au sein de la page | Les premières oppérations d'un développement. |
Remplacer un mot qui n'est pas compris entre 2 balises | Remplacer la valeur 0 par un blanc ou tiret |
Comment remplacer un caractère dans une très longue liste | Remplacer URL par LIEN cliquable via REGEX |
Ecire et remplacer caractère dans un fichier txt | Moyen le plus simple de modifier/remplacer ? |
Plus de sujets relatifs à : Sed, remplacer les n premières occurrences |