Ti ho diviso la data in 'gg' 'mm' 'aa' (sono nell'array 'gma'). Occhio che do per scontato che le date siano tutte dal 2000 in poi, dato che c'è solo l'anno nella vcard, io ci ho aggiunto un '20' davanti. Come orario ci ho messo sempre '00:00:00' e ti ho quotato il tutto:
Codice: Seleziona tutto
/FN:/{
gsub(/[[:space:]]+/, " ", $0);
sub(/FN:/, "", $1);
nome=$1;
for ( i=2; i < NF; i++ )
nome=nome " " $i;
cognome=$NF;
printf "insert into clienti (.....) Values (%s, %s)\n", nome, cognome;
}
/NOTE:/{
sub(/NOTE:/, " ", $0);
do
{
if ( match($0, /^ /) == 0 )
break;
sub(/^ */, "", $0);
note=note $0;
getline;
}
while ( 1 );
gsub(/[[:space:]]+/, " ", note);
sub(/\\n/, "", note);
gsub(/\\\" */, " ", note);
split(note, appuntamenti, " ");
for ( a in appuntamenti )
{
match(appuntamenti[a], /^([^-]*)-([^\(]*)\(([^\)]*)\).*$/, info)
# info[1] == data, info[2] == id_trattamento, info[3] == id_dipendente
split(info[1], gma, ".");
# gma[1] == giorno, gma[2] == mese, gma[3] == anno
printf "insert into appuntamenti (id_cliente, %s, %s, '20%s-%s-%s 00:00:00')\n",
info[3], info[2], gma[3], gma[2], gma[1];
}
}
a me come output da (sull'unica entry che hai messo ad inizio thread):
Codice: Seleziona tutto
insert into clienti (.....) Values (Adele, Xxxxeri)
insert into appuntamenti (id_cliente, 4, 2, '2011-01-22 00:00:00')
insert into appuntamenti (id_cliente, 4, 2, '2011-02-12 00:00:00')
insert into appuntamenti (id_cliente, 4, 2, '2011-03-05 00:00:00')
insert into appuntamenti (id_cliente, 4, 2, '2011-03-26 00:00:00')
insert into appuntamenti (id_cliente, 4, 2, '2011-04-23 00:00:00')
insert into appuntamenti (id_cliente, 4, 2, '2010-11-16 00:00:00')
insert into appuntamenti (id_cliente, 4, 2, '2010-12-09 00:00:00')
insert into appuntamenti (id_cliente, 4, 2, '2010-12-30 00:00:00')
Comunque io ritorno dire che te ne fai poco di queste cose se ti server un'istruzione sql per prelevare l'id del cliente appena inserito.
Emanuele