Bonjour tout le monde,

Mon problème est assez simple, et j'ignore si on peut le faire avec sed (je dirais oui...).

J'ai des fichiers en C qui contiennent des structures.
Elles sont toujours définies ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
typedef struct {
  unsigned char a[1234];
} t_buffer_...
Et le ... varie, ainsi que le contenu.
L'idée est la suivante : extraire ce qui est entre les accolades à condition que le texte devant l'accolade ouvrante soit "typdef struct" et celui après l'accolade fermante "[ ]t_buffer_.*".
Si je mets sur une seule ligne, ça marche bien :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
$>echo "typedef struct { t_buff[1234]; } t_buffer;" | sed 's/typedef struct {\(.*\)} t_buffer.*/aaa\1aaa/'
aaa t_buff[1234]; aaa
Si je le fais avec plusieurs lignes, l'ensemble du fichier s'affiche...
Il me manque un truc, mais quoi... ?

Je précise que je suis sur une machine qui n'a pas beaucoup d'outils (pas de python, seulement les outils unix de base : sed, awk, lex, yacc, etc.).

Merci d'avance !
JM