Script AWK et traitement de fichier

Résolu
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   -  
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'ai un fichier test.sql formaté de la sorte :

                       email                        
----------------------------------------------------
 0033@mail.fr
 007@mail.fr
 mc@mail.fr


je souhaiterais formaté le fichier comme cela :

INSERT INTO module (uid, mail) VALUES (1,'0033@mail.fr');
INSERT INTO module (uid, mail) VALUES (1,'007@mail.fr');
INSERT INTO module (uid, mail) VALUES (1,'mc@mail.fr');


j'utilise AWK en ligne de commande comme suit :
awk -F \| -v Q=\' '{ prov=($1~/^ *$/)?"":uid;printf ("INSERT INTO module (uid, mail) VALUES (1,%s);\n",Q $1 Q) }' test.sql > test1.sql


mais j'ai pas tout a fait ce que je souhaite en sortie dans test1.sql :
INSERT INTO module (uid, mail) VALUES (1,'                       email                        ');
INSERT INTO module (uid, mail) VALUES (1,'----------------------------------------------------');
INSERT INTO module (uid, mail) VALUES (1,' 0033@mail.fr');
INSERT INTO module (uid, mail) VALUES (1,' 007@mail.fr');
INSERT INTO module (uid, mail) VALUES (1,' mc@mail.fr');


il me prend le titre de la colonne email puis la séparation hors je voudrais les supprimer. De plus il me laisse un espace entre le
1,' 0033'  au lieu de 1,'0033'
1,' 007' au lieu de 1,'007'
1,' mc' au lieu de 1,'mc'


Que dois je modifier dans ma ligne AWK?

Merci
A voir également:

3 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
$ cat f1

                       email                        
----------------------------------------------------
  0033@mail.fr
  007@mail.fr
  mc@mail.fr

$ awk '/@/ {c=39;printf("INSERT INTO module (uid, mail) VALUES (1,%c%s%c);\n", c, $1, c)}' < f1
INSERT INTO module (uid, mail) VALUES (1,'0033@mail.fr');
INSERT INTO module (uid, mail) VALUES (1,'007@mail.fr');
INSERT INTO module (uid, mail) VALUES (1,'mc@mail.fr');
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Ou avec "sed" :
$ sed -n "/@/ s/ \(.*\)/INSERT INTO module (uid, mail) VALUES (1,'\1');/p" f1
INSERT INTO module (uid, mail) VALUES (1,'0033@mail.fr');
INSERT INTO module (uid, mail) VALUES (1,'007@mail.fr');
INSERT INTO module (uid, mail) VALUES (1,'mc@mail.fr');
;-))
0
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   23
 
Merci a vous deux.
0