Expressions régulières et SED - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 26-11-2010 à 20:52:00
J'ai l'impression que ça utilise les adresses, sauf que l'adresse est issue aussi d'une regexp : /b.\{3,\}n/
Donc, si dans ton texte, tu as, un b, au moins 3 caractères, puis un n, c'est remplacé par la virgule. S'il y a un chiffre avant, il devient l'adresse pour la suite du script :
"3booooon" devient "3,"
La regexp devient alors :
3,/e.d/{s/.*//g;s/.*/ body/}
Et là on a une commande, je retourne étudier ça.
C'est passionnant, je connaissait pas du tout cette utilisation. J'ai peut être tout faux d'ailleurs.
vw.
Marsh Posté le 26-11-2010 à 20:57:48
Donc, si à la 3ème ligne, on trouve "e.d" alors on exécute s/.*//g;s/.*/ body/ sur cette ligne
C'est à dire qu'on supprime toute succession de caractères puis qu'on remplace l'espace restant par " body"
Bon, j'ai surement tout faux, je vais essayer de vérifier ça.
Marsh Posté le 26-11-2010 à 21:02:52
Bon, c'est confirmé, j'ai pas grand chose de bon.
Code :
|
Donne
Code :
|
Par contre, si j'utilise le fichier suivant, rien n'est changé :
Code :
|
Marsh Posté le 26-11-2010 à 21:35:22
En fait, j'ai l'impression que ça remplace par " body" toutes les lignes comprises entre "b.\{3,\}n" et "e.d". Sans vraiment comprendre pourquoi?
Marsh Posté le 26-11-2010 à 20:07:30
Bonsoir à tous,
en plein travail sur les expression régulière, j'en ai deux qui me posent soucis :
1 ) sed -e '/b.\{3,\}n/,/e.d/{s/.*//g;s/.*/ body/}'
2 ) sed -n -e '3,5{=;s/\([[:lower:]]\).*\([[:lower:]]\)/\1*\2/g;p}'
J'ai des idées pour la 2 (remplacement des caractères minuscules des lignes 3 4 et 5 par des *), mais sinon la 1 aucune aucune idée !
Si des pros du regex passent et veulent bien m'éclairer
merci d'avance et bonne soirée