Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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

pingouinux a écrit :

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 smile .

Hors ligne