alors, en gros la syntaxe de sed (utilisé de cette manière), c'est:
Code :
- sed "s/chaine_a_remplacer/chaine_de_remplacement/"
|
le s veut dire substitute, donc indique un remplacement... (parce qu'on peut faire aussi plein de trucs, des print, des delete, etc.)
ici, je recherche la chaine .*\/\(.*\.cpp\).*\"\(.*\)\".* et je la remplace par \1 \2.
- .*\/ le point c'est n'importe quel caractère, l'étoile veut dire: 0 ou n fois, et \/ parce que je cherche un slash.
- \(.*.cpp\) quand tu as des parenthèses échappées, c'est pour mettre en mémoire une partie de la chaine, c'est pour ca que dans la seconde partie j'utilise \1 et \2, donc après avoir cherché des trucs puis un slash, j'isole le nom du fichier qui est .*\.cpp (note que j'échappe le point avec \.)
- .*\" je cherche n'importe quoi jusqu'a une guillemet
- \(.*\) je met en variable \2 jusqu'a la prochaine guillemet
- \".* et enfin je termine ma chaine avec tout ce qu'on trouve après la seconde guillemet.
c'est pas hyper compliqué, faut connaitre la base des regexp, comprendre l'esprit et après être méthodique avec les expressions régulières... après si ca se trouve il ya mille fois plus simple pour faire la même chose, avec un autre sed, avec awk, etc.
Message édité par pataluc le 11-01-2011 à 17:32:57