Bonjour, J'ai toujours un peu de mal avec les regexp à la sauce sed (pourquoi il faut échapper le quantificateur + et pas * par exemple)... 1) peut-on rendre un quantificateur (* ou +) non gourmand ? (il me semble que la réponse est non, que ce soit pour le pattern de recherche de ligne ou pour la substitution, mais je ne l'ai pas trouvé explicitement) 2) pourquoi pour indiquer "tout caractère sauf un ]" il faut mettre [^]] et pas [^\]] ? 3) Plus généralement, si une bonne âme veut bien ajouter à la page http://cli.asyd.net/home/filtres/sed la liste de ce qui doit être échappé ou pas suivant les cas... Je veux bien essayer, mais ça m'ennuierait d'y écrire des bêtises. A première vue : - dans les séquences entre crochets, il ne faut echapper que . et -, et le \- (apparemment s'il est en 1er pas besoin d'échapper) - en dehors des [, echapper le + lui donne sa valeur de quantificateur mais échapper * lui retire sa valeur de quantificateur. - les () sont interprêtées comme caractères et prennent leur caractère capturant quand elles sont échappées (dans le 1er terme d'une commande s) - partout, \n et \t conservent leur sens habituel (interprêté par sed, pas par le shell car on place en général les expression sed entre quotes simple, pour éviter justement des effets de bords liés aux interprêtations du shell). Mais il me reste des cas que je m'explique mal, cf les tests suivants (avec bash 2.05b et (gnu) sed 4.1.2) s="bla bla [[http://domaine.tld/url]]-[[http://domaine2.tld/url2Plus?com=pliqu&E9e]] blabla" echo $s | sed -e 's#[]]#_#g' bla bla [[http://domaine.tld/url__-[[http://domaine2.tld/url2Plus?com=pliqu&E9e__ blabla => le crochet fermant est bien remplacé echo $s | sed -e 's#[]]*#_#g' _b_l_a_ _b_l_a_ _[_[_h_t_t_p_:_/_/_d_o_m_a_i_n_e_._t_l_d_/_u_r_l_-_[_[_h_t_t_p_:_/_/_d_o_m_a_i_n_e_2_._t_l_d_/_u_r_l_2_P_l_u_s_?_c_o_m_=_p_l_i_q_u_&_E_9_e_ _b_l_a_b_l_a_ => curieux non ? echo $s | sed -e 's#[\-]*#_#g' _b_l_a_ _b_l_a_ _[_[_h_t_t_p_:_/_/_d_o_m_a_i_n_e_._t_l_d_/_u_r_l_]_]_[_[_h_t_t_p_:_/_/_d_o_m_a_i_n_e_2_._t_l_d_/_u_r_l_2_P_l_u_s_?_c_o_m_=_p_l_i_q_u_&_E_9_e_]_]_ _b_l_a_b_l_a_ => pas tellement plus bizarre que le précédent echo $s | sed -e 's#[]]#_#g' bla bla [[http://domaine.tld/url__-[[http://domaine2.tld/url2Plus?com=pliqu&E9e__ blabla echo $s | sed -e 's#[]\-]#_#g' bla bla [[http://domaine.tld/url___[[http://domaine2.tld/url2Plus?com=pliqu&E9e__ blabla echo $s | sed -e 's#[\-]]#_#g' bla bla [[http://domaine.tld/url]]-[[http://domaine2.tld/url2Plus?com=pliqu&E9e]] blabla => tiens, ça marche plus si on les inverse... etc... -- Daniel