Bonjour!

Je suis novice en programmation et je découvre à peine la puissance des expressions régulières et les outils comme awk.

J'ai un fichier texte qui se présente de cette façon :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
CREATE TABLE : prg1;TAB1 AS
SELECT : prg1;COL1,COL2,COL3
FROM : prg1;TABLEFROM
 
CREATE TABLE : prg1;TAB2 AS
SELECT : prg1;ALIAS1.COL1,ALIAS2.COL2
FROM : prg1;TABLEFROM1 ALIAS1, TABLEFROM2 ALIAS2
Et j'aimerai arriver après traitement à ce résultat :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
prg1;TAB1;TABLEFROM;COL1
prg1;TAB1;TABLEFROM;COL2
prg1;TAB1;TABLEFROM;COL3
 
prg1;TAB2;TABLEFROM1;COL1
prg1;TAB2;TABLEFROM2;COL2
Vous pensez que c'est possible de faire ça juste avec un petit script en bash/ksh ou en perl?

Avec l'aide d'une autre personne j'avais un début de script awk mais c'est un peut lourd et ça ne fonctionne pas parfaitement.

Quelle serait la méthode la plus simple selon vous?

N'hésitez pas si vous avez des idées!

PS : Les données que je donne en exemple sont simplifiées, je vous copie ci dessous un exemple réél de fichier en entrée (pour ne pas se baser uniquement sur l'exemple comme je l'avais fait dans une 1ère version de mon script...) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
CREATE TABLE : programme1.out;TABLE1 AS
SELECT : programme1.out; DISTINCT PERS.ID_PERS
FROM : programme1.out;TAB_GRP GRP , TAB_PERS PERS
CREATE TABLE : programme1.out;TABLE2 AS
SELECT : programme1.out;ID_PERS,
FROM : programme1.out;TABLE_FROM1