Menu

Utilisation de AWK : runaway string constant [Résolu]

Messages postés
551
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
17 mai 2019
- - Dernière réponse : pcsystemd
Messages postés
551
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
17 mai 2019
- 17 juil. 2018 à 14:12
Bonjour,

J'ai un fichier qui contient les entrées suivantes séparées par un tube | :

toto@mail.com|titi@mail.com|tutu@free.fr|titul@gmail.com| etc..


Je souhaiterais en sortie cela :

insert into ma_table(crted_a,recer,opt,reaon,teme_id) select '2018-07-11','toto@mail.com','','Message',id from ma_table where id in(select id from ma_table);
insert into ma_table(crted_a,recer,opt,reaon,teme_id) select '2018-07-11','titi@mail.com','','Message',id from ma_table where id in(select id from ma_table);
etc..


J'ai donc utilisé AWK avec la commande suivante :

awk -F \| -v Q=\' '{ prov=($1~/^ *$/)?"":prov;printf ("insert ma_table(created_t,recver,option,reason,teate_id) select '2018-07-11','%s','','message',id from ma_table2 where id in(select id from ma_table3);", Q $1 Q) }' fichier.txt 


Mais j'ai l'erreur suivante :

awk: line 1: runaway string constant "insert int ...


Merci pour votre aide.



Afficher la suite 

Votre réponse

3 réponses

0
Merci
salut,

ce ne serait pas les apostrophes qui font échouer la commande ?
remplace-les par
'\''

=>
awk 'cmd'\''autre'\''chose'

parce que chaque apostrophe ouvre et ferme la commande awk.
Commenter la réponse de Utilisateur anonyme
Messages postés
1189
Date d'inscription
lundi 2 mai 2016
Statut
Membre
Dernière intervention
17 mai 2019
164
0
Merci
Salut,

$ cat foo.sh
#! /bin/bash

while read -d '|' line
do
echo "insert into ma_table(crted_a,recer,opt,reaon,teme_id) select '2018-07-11','${line}','','Message',id from ma_table where id in(select id from ma_table);"
done <fich


$ cat fich
toto@mail.com|titi@mail.com|tutu@free.fr|titul@gmail.com|


$ ./foo.sh
insert into ma_table(crted_a,recer,opt,reaon,teme_id) select '2018-07-11','toto@mail.com','','Message',id from ma_table where id in(select id from ma_table);
insert into ma_table(crted_a,recer,opt,reaon,teme_id) select '2018-07-11','titi@mail.com','','Message',id from ma_table where id in(select id from ma_table);
insert into ma_table(crted_a,recer,opt,reaon,teme_id) select '2018-07-11','tutu@free.fr','','Message',id from ma_table where id in(select id from ma_table);
insert into ma_table(crted_a,recer,opt,reaon,teme_id) select '2018-07-11','titul@gmail.com','','Message',id from ma_table where id in(select id from ma_table);


;-)
Commenter la réponse de UnGnU
Messages postés
551
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
17 mai 2019
28
0
Merci
Merci à vous deux.

Effectivement les apostrophes foutaient le bazar!

Merci UnGnU pour ta solution.
Commenter la réponse de pcsystemd