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
- Formulaire en ligne de meta - Guide
- Apparaitre hors ligne instagram - 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];