Zeph Le 11/01/2011 à 13:21 sed -nr 's/^toto tata (.*)$/\1/p' tonfichier

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
Zeph Le 11/01/2011 à 13:33 je suppose qu'il connait déjà les regexp puisqu'il parle de grep, donc la réponse consiste simplement à passer par sed à la place, qui est un peu plus puissant et permet des opérations de remplacement que grep ne supporte pas ^^

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
gon33 Le 11/01/2011 à 16:13 Oki
Sinon j'aurais utilisé cut parce que je sais que mon expression est (à priori) en début de ligne. En calculant la taille de la chaine ça marche aussi, mais c'est moins joli...
gon33 Le 11/01/2011 à 16:39 Ok, ça marche, sauf que ça me renvoie la dernière occurence, et je préfèrerais récupérer la première
Bon, je pige pas encore tout :
sed -nr 's/^toto tata (.*)$/\1/p' tonfichier
On substitue (s) un début de ligne suivi de "toto tata " suivi de n'importe quoi jusqu'à la fin de la ligne par \1/p. (p = print)
C'est quoi \1 ?
Et à quoi sert le -n? Cacher ce qui matche pas?
Zeph Le 11/01/2011 à 16:42 le \1 fait référence à ce qui a été matché dans la première paire de parenthèses : (.*)
dans ce cas, c'est tout ce qui se situe après "toto tata " jusqu'à la fin de la ligne.
le -n sert en effet à ne pas afficher par défaut les lignes du fichier (d'où l'utilisation de "p" quand une ligne nous intéresse).

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
gon33 Le 11/01/2011 à 17:04 Ah oui, mais j'ai un pb : Sed peut travailler sur des variables du bash?
Si je mets "toto tata " dans TMP et que je fais
sed -nr 's/^$TMP(.*)$/\1/p' fichier
il renvoie rien du tout
nitro Le 11/01/2011 à 17:24 Utilise des doubles quotes pour autoriser l'expansion des variables :
sed -nr "s/^$TMP(.*)$/\1/p" fichier
So much code to write, so little time.