Substitutions inter ligne
Résolu
NoviceSed
-
NoviceSed -
NoviceSed -
Bonjour,
Voici ce que je voudrai faire
Entrée :
#define toto5 1024
extern UINT32 tab[];
Le but est de récupérer le numéro qui suit toto ainsi que la taille pour les injecter dans la seconde ligne et avoir le résultat suivant :
Sortie :
#define toto5 1024
static UINT32 tab5[1024];
Mon problème est que je ne sais pas comment propager le numéro et la taille à la ligne suivante.
Voilà ma commande actuelle :
/#define toto[0-9]*/ {
s/\(#define toto\([0-9]*\).*\) \
[A-Za-z0-9_]/\1\2/
n
s/extern UINT32 \([A-Za-z0-9_]*\)\(.*\)/ \
static UINT32 \1[]; \
/
}
Pouvez-vous m'aider ?
Par avance merci
Voici ce que je voudrai faire
Entrée :
#define toto5 1024
extern UINT32 tab[];
Le but est de récupérer le numéro qui suit toto ainsi que la taille pour les injecter dans la seconde ligne et avoir le résultat suivant :
Sortie :
#define toto5 1024
static UINT32 tab5[1024];
Mon problème est que je ne sais pas comment propager le numéro et la taille à la ligne suivante.
Voilà ma commande actuelle :
/#define toto[0-9]*/ {
s/\(#define toto\([0-9]*\).*\) \
[A-Za-z0-9_]/\1\2/
n
s/extern UINT32 \([A-Za-z0-9_]*\)\(.*\)/ \
static UINT32 \1[]; \
/
}
Pouvez-vous m'aider ?
Par avance merci
A voir également:
- Substitutions inter ligne
- Partager photos en ligne - Guide
- Mètre en ligne - Guide
- Aller à la ligne excel - Guide
- Apparaitre hors ligne instagram - Guide
- Formulaire en ligne de meta - Guide
4 réponses
Salut,
[tmpfs]$ cat toto #define toto5 1024 extern UINT32 tab[]; #define toto4 512 extern UINT32 tab[]; #define toto6 2048 extern UINT32 tab[]; [tmpfs]$ sed '/^#define/{ h s/[^0-9]*\([0-9]*\)/\1/ N s/\([^ ]*\) \([^\n]*\)\(.*\)\(\[\)\(\]\).*/\3\1\4\2\5;/ H g s/\n// }' toto #define toto5 1024 extern UINT32 tab5[1024]; #define toto4 512 extern UINT32 tab4[512]; #define toto6 2048 extern UINT32 tab6[2048]; [tmpfs]$;-))
Salut,
$ cat define #define toto5 1024 extern UINT32 tab[]; #define toto4 512 static UINT32 tab[]; #define toto6 2048 extern UINT32 tab[]; $ perl -ne '($x,$y)=/(\d+)\s(\d+)/ if/#def/;s/\[]/${x}[$y]/;print' define #define toto5 1024 extern UINT32 tab5[1024]; #define toto4 512 static UINT32 tab4[512]; #define toto6 2048 extern UINT32 tab6[2048];
Re,
Ou
Ou
$ cat define #define toto5 1024 extern UINT32 tab[]; #define toto4 512 static UINT32 tab[]; #define toto6 2048 extern UINT32 tab[]; $ perl -ne '/#def/?($x,$y)=/(\d+)\s(\d+)/:s/\[/${x}[$y/;print' define #define toto5 1024 extern UINT32 tab5[1024]; #define toto4 512 static UINT32 tab4[512]; #define toto6 2048 extern UINT32 tab6[2048];