#1 Le 14/01/2013, à 12:45
- manux750
[Résolu] utilisation d'un awk avec la commande curl valeur 0
bonjour je sollicite votre aide car je bloque sur un souci et je ne comprend pas trop d'ou cela provient.
J'ai effectué des recherches afin de solutionner mon problème mais sans succès .
Je vous l'expose .
fichierSource.txt :
nbr1;code1;text1;http://www.google.fr/
nbr2;code2;text2;http://ubuntu.fr/
nbr3;code3;text3;http://twitter.com/
nbr4;code4;text5;http://fr-fr.facebook.com/
Je voudrais créer autant de fichier qu'il y a de ligne dans le fichier en y ajoutant un champs contenant le code source de la page web contenut dans chaque ligne . en gros je voudrais pour cet exemple 4 fichiers comme suit:
nbr1_code1.txt
nbr1;code1;text1;http://www.google.fr/;<!DOCTYPE html><html><head><title>iGoogle</title><head></html>
nbr2_code2.txt
nbr2;code2;text2;http://ubuntu.fr/;<!DOCTYPE html><html><head><title>exemple</title><head></html>
nbr3_code3.txt
nbr3;code3;text3;http://twitter.com/;<!DOCTYPE html><html><head><title>exemple2</title><head></html>
nbr4_code4.txt
nbr4;code4;text5;http://fr-fr.facebook.com/;<!DOCTYPE html><html><head><title>exemple3</title><head></html>
je pensais pouvoir réussir à faire cela en utilisant cette commande mais je n'arrive pas à récupérer le code source des page :
ci dessous la commande :
awk -F";" '{print $0";" system("curl "$4) > $1"_"$2".txt"}' < fichierSource.txt
mais j'obtiens les résultats suivants qui ne correspondent pasà mon attente avec un 0 à la place du code que je souhaiterai :
nbr1_code1.txt
nbr1;code1;text1;http://www.google.fr/;0
nbr2_code2.txt
nbr2;code2;text2;http://ubuntu.fr/;0
nbr3_code3.txt
nbr3;code3;text3;http://twitter.com/;0
nbr4_code4.txt
nbr4;code4;text5;http://fr-fr.facebook.com/;0
Pouvez vous m'aider à solutionner mon problème ?
Merci de m'avoir lu .
Bien cordialement ,
Dernière modification par manux750 (Le 15/01/2013, à 11:22)
Hors ligne
#2 Le 14/01/2013, à 12:52
- pingouinux
Re : [Résolu] utilisation d'un awk avec la commande curl valeur 0
Bonjour,
C'est parce que dans awk, la commande system renvoie le code retour de la commande appelée.
Hors ligne
#3 Le 14/01/2013, à 13:02
- manux750
Re : [Résolu] utilisation d'un awk avec la commande curl valeur 0
Merci beaucoup pour l'explication du 0:) , Il y aurai -t il une piste pour arriver a mon objectif ?
Hors ligne
#4 Le 14/01/2013, à 13:08
- pingouinux
Re : [Résolu] utilisation d'un awk avec la commande curl valeur 0
Peut-être quelque chose comme cela (je ne peux pas tester, curl n'est pas installé chez moi) :
awk -F";" '{"curl "$4 | getline lig; print $0";"lig> $1"_"$2".txt"}' < fichierSource.txt
Hors ligne
#5 Le 14/01/2013, à 13:11
- manux750
Re : [Résolu] utilisation d'un awk avec la commande curl valeur 0
Merci beaucoup , je vais tester cela et je tiens au courant .
Hors ligne
#6 Le 14/01/2013, à 13:22
- manux750
Re : [Résolu] utilisation d'un awk avec la commande curl valeur 0
la commande me renvoi la première balise du code source mais on est sur la bonne voie je pense .
Hors ligne
#7 Le 14/01/2013, à 13:34
- pingouinux
Re : [Résolu] utilisation d'un awk avec la commande curl valeur 0
Un peu plus compliqué :
awk -F";" '{ORS_=ORS;ORS="";print $0";" >$1"_"$2".txt";while ("curl "$4 | getline lig) {print lig> $1"_"$2".txt"};ORS=ORS_}' < fichierSource.txt
Hors ligne
#8 Le 14/01/2013, à 14:54
- manux750
Re : [Résolu] utilisation d'un awk avec la commande curl valeur 0
Un peu plus compliqué :
awk -F";" '{ORS_=ORS;ORS="";print $0";" >$1"_"$2".txt";while ("curl "$4 | getline lig) {print lig> $1"_"$2".txt"};ORS=ORS_}' < fichierSource.txt
Celle ci fonctionne mais que pour la première ligne du fichier, un souci au niveau de la boucle à priori .je regarde .
Hors ligne
#9 Le 14/01/2013, à 15:22
- manux750
Re : [Résolu] utilisation d'un awk avec la commande curl valeur 0
la commande fonctionne totalement maintenant en y ajoutant l'instruction
close(lig)
awk -F";" '{ORS_=ORS;ORS="";print $0";" >$1"_"$2".txt";while ("curl "$4 | getline lig) {print lig> $1"_"$2".txt"};close(lig);ORS=ORS_}' < fichierSource.txt
Merci beaucoup pour ton aide .Je peux maintenant marquer le sujet comme étant résolu.
Bonne journée .
Dernière modification par manux750 (Le 14/01/2013, à 15:23)
Hors ligne
#10 Le 14/01/2013, à 15:27
- Watael
Re : [Résolu] utilisation d'un awk avec la commande curl valeur 0
salut,
De mémoire, il faut fermer le pipe, avec quelque chose comme
close("curl "$4)
Il va aussi falloir concaténer chaque ligne lue par la boucle dans une variable "temporaire", qui sera envoyée vers le fichier de destination, et qui devra être purgée avant de passer au traitement de la ligne suivante du fichier source.
Dernière modification par Watael (Le 14/01/2013, à 15:27)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#11 Le 14/01/2013, à 16:10
- manux750
Re : [Résolu] utilisation d'un awk avec la commande curl valeur 0
l'instruction
close("curl "$4)
me renvoi un boucle infini a cause de l'erreur renvoyée
curl: (23) Failed writing body (1122 != 1448)
merci .
Hors ligne
#12 Le 14/01/2013, à 21:14
- manux750
Re : [Résolu] utilisation d'un awk avec la commande curl valeur 0
Bonsoir, je butte encore sur un problème lié au précédent .
en effet suite à la génération des fichiers
nbr1_code1.txt
nbr1;code1;text1;http://www.google.fr/;<!DOCTYPE html><html><head><title>iGoogle</title><head></html>
etcc .
j'ai souhaité les contatener avec la commande
cat *.txt > resultat.txt
Le resultat de la concaténation se retrouve sur une seul ligne comme ceci :
resultat.txt
nbr1;code1;text1;http://www.google.fr/;<!DOCTYPE html><html><head><title>iGoogle</title><head</html>nbr2;code2;text2;http://ubuntu.fr/;<!DOCTYPE html><html><head><title>exemple</title><head></html>nbr3;code3;text3;http://twitter.com/;<!DOCTYPE html><html><head><title>exemple2</title><head></html>nbr4;code4;text5;http://fr-fr.facebook.com/;<!DOCTYPE html><html><head><title>exemple3</title><head></html>
En ajoutant un
print lig "/n"
dans le code , dans les fichier de sortie chaque ligne du code source est placé sur une ligne distinct comme suit :
nbr1;code1;text1;http://www.google.fr/;<!DOCTYPE html>
<html>
<head>
<title>iGoogle</title>
<head>
</html>
nbr2;code2;text2;http://ubuntu.fr/;<!DOCTYPE html>
<html>
<head>
<title>exemple1</title>
<head>
</html>
nbr3;code3;text3;http://twitter.com/;<!DOCTYPE html>
<html>
<head>
<title>exemple2</title>
<head>
</html>
nbr4;code4;text4;http://fr-fr.facebook.com/;<!DOCTYPE html>
<html>
<head>
<title>exemple3</title>
<head>
</html>
j'avoue avoir du mal avec awk .
Je vous remercie d'avance en espérant que vous pourrez m'aider a solutionner mon problème une nouvelle fois .
Cordialement
Hors ligne
#13 Le 14/01/2013, à 23:49
- pingouinux
Re : [Résolu] utilisation d'un awk avec la commande curl valeur 0
Exact, j'ai oublié un truc (print à la fin de la commande awk).
awk -F";" '{ORS_=ORS;ORS="";print $0";" >$1"_"$2".txt";while ("curl "$4 | getline lig) {print lig> $1"_"$2".txt"};close(lig);ORS=ORS_;print ""}' < fichierSource.txt
Hors ligne
#14 Le 15/01/2013, à 11:16
- manux750
Re : [Résolu] utilisation d'un awk avec la commande curl valeur 0
Merci beaucoup les gars ça fonctionne parfaitement .
Hors ligne