Tube awk | mysql
Résolu/Fermé
loloviolo
-
3 nov. 2008 à 02:57
loloviolo Messages postés 12 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 6 novembre 2008 - 6 nov. 2008 à 21:53
loloviolo Messages postés 12 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 6 novembre 2008 - 6 nov. 2008 à 21:53
A voir également:
- Tube awk | mysql
- Play tube - Télécharger - Téléchargement & Transfert
- Mysql community server - Télécharger - Bases de données
- A tube catcher - Télécharger - Copie & Extraction
- You tube sans pub - Accueil - Streaming
- Save tube - Télécharger - Téléchargement & Transfert
10 réponses
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
3 nov. 2008 à 09:34
3 nov. 2008 à 09:34
oui, mais je suppose que l'input doit être au format sql. je verrais plutôt:
tail -n 100 /fichier_a_ajouter | awk '/markers/{print 'INSERT INTO event (hash, ip) VALUES (\"testhash\"," $1 $7}' | mysql -h localhost -u user -ppassword ...
tail -n 100 /fichier_a_ajouter | awk '/markers/{print 'INSERT INTO event (hash, ip) VALUES (\"testhash\"," $1 $7}' | mysql -h localhost -u user -ppassword ...
loloviolo
Messages postés
12
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
6 novembre 2008
20
3 nov. 2008 à 14:57
3 nov. 2008 à 14:57
Nickel ca marche !
Ca parrait effectivement plus logique. Vu l'heure de mon post, j'ai des circonstances attenuantes :-)
Merci dubcek
Ca parrait effectivement plus logique. Vu l'heure de mon post, j'ai des circonstances attenuantes :-)
Merci dubcek
loloviolo
Messages postés
12
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
6 novembre 2008
20
4 nov. 2008 à 02:31
4 nov. 2008 à 02:31
J'en profite pour poser un autre problème. $7 est en fait une URL de type /dos1/dos2/fichier.html
Comment entrer dos2 et fichier (sans .html) dans ma base toujours avec le même commande.
J'ai essayé awk mais comme je suis déjà dans un awk, ça passe pas.
J'ai essayé split, ça va pas non plus.
J'ai aussi pensé à appeler awk avec l'option -F mais elle n'accepte qu'un seul séparateur
Merci de votre aide.
LoLoVioLo
Comment entrer dos2 et fichier (sans .html) dans ma base toujours avec le même commande.
J'ai essayé awk mais comme je suis déjà dans un awk, ça passe pas.
J'ai essayé split, ça va pas non plus.
J'ai aussi pensé à appeler awk avec l'option -F mais elle n'accepte qu'un seul séparateur
Merci de votre aide.
LoLoVioLo
dindoun
Messages postés
1028
Date d'inscription
mercredi 23 janvier 2008
Statut
Membre
Dernière intervention
17 février 2017
135
4 nov. 2008 à 06:48
4 nov. 2008 à 06:48
salut
tu peux peut être essayer en incluant un deuxième awk dans des `` ( guilletmets altgr 7 )
et donc à la place de $7 tu mets
tu peux peut être essayer en incluant un deuxième awk dans des `` ( guilletmets altgr 7 )
et donc à la place de $7 tu mets
`echo $7 | awk 'blah{blah}' `
loloviolo
Messages postés
12
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
6 novembre 2008
20
4 nov. 2008 à 13:37
4 nov. 2008 à 13:37
Merci pour l'idée mais j'ai beau essayer dans tous les sens, ça ne marche pas
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
4 nov. 2008 à 08:37
4 nov. 2008 à 08:37
echo /dos1/dos2/fichier.html | awk -F'/\.' '{print $3, $4}'
loloviolo
Messages postés
12
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
6 novembre 2008
20
4 nov. 2008 à 13:32
4 nov. 2008 à 13:32
Merci de ton aide dubcek
Malheureusement, cette methode ne fonctionne pas. Comme je le disais plus haut, awk semble n'accepter en option -F qu'un caractere ou chaine.
Dans ton cas, il m'affiche un avertissement ( echapement \. traité comme . seulement ) prend donc en compte /. comme separateur et decoupe en os1, os2 et ichier.html (le point etant evalué comme n'importe que caractere)
Malheureusement, cette methode ne fonctionne pas. Comme je le disais plus haut, awk semble n'accepter en option -F qu'un caractere ou chaine.
Dans ton cas, il m'affiche un avertissement ( echapement \. traité comme . seulement ) prend donc en compte /. comme separateur et decoupe en os1, os2 et ichier.html (le point etant evalué comme n'importe que caractere)
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
4 nov. 2008 à 13:43
4 nov. 2008 à 13:43
Salut,
Je pense que l'expression de dubcek doit s'écrire plutôt comme ça (sans espace après le crochet ouvrant et avant le crochet fermant) :
Je pense que l'expression de dubcek doit s'écrire plutôt comme ça (sans espace après le crochet ouvrant et avant le crochet fermant) :
awk -F'[ /\. ]' '{print $3, $4}'C'est une mauvaise interprétation de ces caractères par la syntaxe interne à CCM qui transforme les expressions entourées par des crochets en lien ;-((
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
4 nov. 2008 à 13:46
4 nov. 2008 à 13:46
juste, merci
loloviolo
Messages postés
12
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
6 novembre 2008
20
4 nov. 2008 à 14:19
4 nov. 2008 à 14:19
Merci à tous - Ca marche !
loloviolo
Messages postés
12
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
6 novembre 2008
20
5 nov. 2008 à 03:00
5 nov. 2008 à 03:00
Ahhhh ca devient un vrai casse-tete ce script.
Ca devrait marcher ... et pourtant .... enlevez les espaces dans [ /\. ]
tail -f /var/log/httpd/VLOG-2008-11-monsite.com.log | awk -v event_date="$(date '+%Y-%m-%d %H:%M:%S')" '/markers/{print $1$7"/"event_date}' | awk -F [ /\. ] '//{print "INSERT INTO event (event_date, ip, camp, user, hash, status) VALUES (\""$11"\", \""$1"."$2"."$3"."$4"\", "$7", "$8", \""$9"\", \"READ\");"}' | mysql -h localhost -u user -ppassword table
enlevez les espaces dans [ /\. ]
Le script marche bien avec tail -n 100
Le script marche aussi avec le tail -f si je m'arrete au premier awk : tail -f /var/log/httpd/VLOG-2008-11-monsite.com.log | awk -v event_date="$(date '+%Y-%m-%d %H:%M:%S')" '/markers/{print $1$7"/"event_date}'
Problemes :
1- La date reste toujours la meme (date du debut d'execution)
2- Le script complet avec le tail -f ne retourne rien
Merci de votre aide.
LoLoVioLo
Ca devrait marcher ... et pourtant .... enlevez les espaces dans [ /\. ]
tail -f /var/log/httpd/VLOG-2008-11-monsite.com.log | awk -v event_date="$(date '+%Y-%m-%d %H:%M:%S')" '/markers/{print $1$7"/"event_date}' | awk -F [ /\. ] '//{print "INSERT INTO event (event_date, ip, camp, user, hash, status) VALUES (\""$11"\", \""$1"."$2"."$3"."$4"\", "$7", "$8", \""$9"\", \"READ\");"}' | mysql -h localhost -u user -ppassword table
enlevez les espaces dans [ /\. ]
Le script marche bien avec tail -n 100
INSERT INTO event (event_date, ip, camp, user, hash, status) VALUES ("2008-11-05 02:50:50", "90.8.70.76", 1, 1, "4884f1e54bc4e21a51b46cff8d37bd9fbd217b51", "READ");
Le script marche aussi avec le tail -f si je m'arrete au premier awk : tail -f /var/log/httpd/VLOG-2008-11-monsite.com.log | awk -v event_date="$(date '+%Y-%m-%d %H:%M:%S')" '/markers/{print $1$7"/"event_date}'
90.8.70.76/mailing/markers/1/1/4884f1e54bc4e21a51b46cff8d37bd9fbd217b51.gif/2008-11-05 02:52:30
Problemes :
1- La date reste toujours la meme (date du debut d'execution)
2- Le script complet avec le tail -f ne retourne rien
Merci de votre aide.
LoLoVioLo
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
5 nov. 2008 à 12:10
5 nov. 2008 à 12:10
1 c'est normal, la commande date est exécutée au démarrage de awk. pour que la date soit recalculée à chaque ligne, il faut dans le awk, quelque chose comme awk 'system("date"); ...
loloviolo
Messages postés
12
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
6 novembre 2008
20
6 nov. 2008 à 21:53
6 nov. 2008 à 21:53
Voilà mon script est fini ! Merci à tous pour votre aide (surtout dubcek)
Pour info, je ne sais toujours pas pourquoi chaque pipe fonctionne independement mais pas l'ensemble. J'ai finalement utilisé une fonction que j'appelle depuis mon awk. Ainsi la date est bien rafraichie et j'ai jamais plus de 2 pipes par ligne.
Je vous conseille la lecture du super post de drl sur unix.com
https://www.unix.com/shell-programming-and-scripting/49026-external-function-awk.html
Pour info, je ne sais toujours pas pourquoi chaque pipe fonctionne independement mais pas l'ensemble. J'ai finalement utilisé une fonction que j'appelle depuis mon awk. Ainsi la date est bien rafraichie et j'ai jamais plus de 2 pipes par ligne.
Je vous conseille la lecture du super post de drl sur unix.com
https://www.unix.com/shell-programming-and-scripting/49026-external-function-awk.html