IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Récupérer des liens dans un fichier texte


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Points : 8
    Points
    8
    Par défaut Récupérer des liens dans un fichier texte
    Bonjour,

    Tout d'abord, j'ai un fichier texte remplit de chaîne de caractères, et, parmi elles, se trouvent des liens commençant par http://, et finissant soit par .jpg soit par .png, et je souhaites donc les récupérer.

    Mes liens sont disposé aléatoirement dans le document, ne sont pas forcément en début ou en fin de ligne, et peuvent être sur deux lignes à la fois.

    Pour le moment, j'utilise cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\Julien>grep -o 'http://.*\.jpg' exemple1.txt
    Cette commande fonctionne et me permet de récupérer les liens commençant par http:// et finissant par .jpg tout en étant sur une seule ligne.

    J'ai testé divers méthodes trouvées sur le net, mais malheureusement je n'ai pas eu de résultats positifs.

    Mais j'aimerais faire ce que j'ai décrit plus haut en utilisant grep ou une autre commande si elle est plus appropriée.

    Je remercie par avance les personnes ayant une solution ou une piste de solution à me proposer.


    Edit :

    J'ai réussi à trouver comment faire pour avoir mes liens en .png et .jpg en une seule ligne de commande même si je pense qu'il y a moyen de faire plus propre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\Julien>grep -o 'http://.*\.jpg' exemple1.txt && grep -o 'http://.*\.png' exemple1.txt
    Par contre, je n'arrive toujours pas à récupérer les liens qui sont sur 2 lignes, et lorsque que mon fichier est trop gros (1393 lignes) la console ne me retourne aucun résultat.

    Si quelqu'un a des idées, qu'il n'hésite pas.

  2. #2
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Citation Envoyé par Julien33400 Voir le message
    Mes liens sont disposé aléatoirement dans le document, ne sont pas forcément en début ou en fin de ligne et peuvent être sur deux lignes à la fois.
    Peut-on avoir un exemple concret de ce que tu appelles des liens sur deux lignes ?
    En gros affiche-nous un bout de ton fichier exemple1.txt avec tous les cas possibles.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Merci de vouloir m'aider Zipe31.

    Voilà une partie du document :

    body{background:url
    (http://d2wb3jk3zoe588.cloudfront.net...wRRFond900.jpg) center 50px no-repeat #000;font-family:Tahoma,Geneva,sans-serif;margin:0px}.ensemble{width:auto;margin:2px
    auto auto;margin:2px
    auto 0px auto;font-size:12px;color:#56442E;text-align:center;backgroungdsgsdgegvdggsdgsd:url(http://d2wb3jk3zoe588.cloudfront.net/images/rr3d_mas(http://d2wb3jk3zoe588.cloudfront.net/images/newRRFond900.jpg)
    a{text-decoration:none;cursor:pointer}/*/*/.contenuGeneral{width:100%;display:inline-block}.cadre_interieur{height:auto;width:auto;position:relative;display:inline-
    block;width:950px;margin-left:-4px}.cadre_interieur .zonePubDroite, .cadre_interieur
    .espace_pub_contenu_2{display:none}.cadre_interieurPub .zonePubDroite, .cadre_interieurPub
    .espace_pub_contenu_2{display:inline-block}.cadre_interieurPub{width:1260px}.cadre_interieur
    .element{float:left;width:100%}.cadre_interieur
    J'ai parcouru vite fait le document et j'ai l'impression qu'il n'y a pas de liens sur deux lignes donc ce n'est pas le plus grave mais j'ai quand même mis en rouge ce à quoi je pensais car c'est toujours utile de savoir comment faire.

    Je ne sais pas si le contexte vous intéresse mais peut être que ce que je veux faire n'est pas possible donc je vais vous expliquez au cas où vous auriez une meilleure méthode ou si c'est impossible.
    Donc je suis sur une jeu de rôle qui s'appelle les royaumes renaissants (http://www.lesroyaumes.com), et j'occupe un poste d'adjoint à l'urbanisme, j'aimerais donc récupérer l'image de mon village afin d'en faire un cadastre.

    Ci dessous une capture d'écran :

    Nom : 451518Capture.png
Affichages : 986
Taille : 109,6 Ko

    Lien montrant une vue plus détaillée de la capture : http://hpics.li/924ac32

    La carte est bien plus grande que ce que l'on voit sur la capture et l'on navigue dessus à l'aide de la souris.
    J'ai donc pensé que c'était une image classique à laquelle on avait ajouté des fonctionnalités (dynamique, interactif, etc...).
    Je me suis donc mis en tête de retrouver cette image et pour cela j'ai utilisé Firebug sur Firefox et j'en suis revenu à récupérer un lien contenant d'autres liens pointant vers des images.
    Voici le lien que j'ai récupéré : http://www.lesroyaumes.com/min/?g=cs...n&v=1398861713

    Voilà donc mon but final serait de récupérer l'image représentant mon village.
    Avis aux connaisseurs, est-ce que vous pensez que c'est possible ? ou alors je suis à côté de la plaque car je n'y connais pas grand chose aux interfaces web et toutes leurs rouages.

  4. #4
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Re-

    Normalement grep -o 'http://[^)]*' fichier devrait faire l'affaire.

    Un aperçu du nombre de lien récupérés avec l'adresse fournie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ grep -o 'http://[^)]*' WG4bkKFe.css | wc -l
    788

  5. #5
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Peut être que cette syntaxe grep -Po '\(\Khttp://[^)]*' fichier serait plus appropriée, sous réserve que ton grep (sous Windows apparemment) accepte le -P

  6. #6
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 266
    Points : 13 526
    Points
    13 526
    Par défaut
    Bonjour,

    Citation Envoyé par Monsieur Je-sais-tout
    Seules les images png t'intéressent car, contrairement à jpg, le format png gère la transparence, et est donc utilisable dans une vue 3D.
    Quant à la conduite (commande sur une ligne avec des pipes), tu pourrais la finir par un wget pour télécharger les-dites images (plus intéressantes que leur URL).

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Tout d’abord merci à tous de vous préoccuper de mon problème et de donner de votre temps pour m'aider.
    Je suis désolé de répondre aussi tardivement mais j'ai été très occupé ces temps-ci.

    J'ai testé vos exemple de commandes et malheureusement elles n'ont pas eu l'effet désiré, je vous laisse découvrir mon retour plus bas.

    Tout d'abord lorsque j'effectue n'importe laquelle des commandes sur mon fichier complet, la ça ne me retourne rien et l'envoi vers un fichier me donne un fichier vide.
    Ce n'est pas le plus grave car je peux découper le fichier en plusieurs autres sous-fichier mais si quelqu'un pouvait m'éclairer sur la raison de ce résultat.

    Donc en ce qui concerne les tests des commandes que vous avez posté j'obtiens les résultats suivant :

    La commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -Po '\(\Khttp://[^)]*' fichier
    avec comme fichier l'extrait que j'ai mis plus haut.

    Et elle me retourne comme résultat :
    http://
    Par contre si je test la commande sur mon fichier complet, je n'ai aucun résultat qui ressort.

    Concernant la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -o 'http://[^)]*' fichier
    avec toujours le même fichier que l'on traite.

    La commande me retourne :
    http://
    http://
    http://
    http://
    http://
    http://
    http://
    http://
    Donc cette commande est plus efficace que la première que j'ai testé car j'ai le même nombre d'"http" que contient le fichier mais ça ne me retourne que le "http://" sans le reste du lien.

    D'après le post de Flodelarab, j'ai à priori seulement besoin des images png donc j'ai utiliser cette commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -o 'http://.*\.png' exemple2.txt
    Le résultat est le suivant :
    http://d2wb3jk3zoe588.cloudfront.net...r3d_masque.png
    http://d2wb3jk3zoe588.cloudfront.net...footerLeft.png) top left no-rep
    eat;width:125px}.elementBottomDecorRepeat{background:url(http://d2wb3jk3zoe588.c
    loudfront.net/images/rr3d_footerRepeat.png
    Et j'ai utilisé un fichier texte contenant les données suivantes :

    (http://d2wb3jk3zoe588.cloudfront.net...r3d_masque.png) top
    repeat-x}.ensemble
    a{text-decoration:none;cursor:pointer}/*/*/.contenuGeneral
    {width:100%;display:inline-block}.cadre_interieur
    {height:auto;width:auto;position:relative;display:inline-
    block;width:950px;margin-left:-4px}.cadre_interieur .zonePubDroite,
    .cadre_interieur
    .espace_pub_contenu_2{display:none}.cadre_interieurPub .zonePubDroite,
    .cadre_interieurPub
    .espace_pub_contenu_2{display:inline-block}.cadre_interieurPub
    {width:1260px}.cadre_interieur
    .element{float:left;width:100%}.cadre_interieur
    .elementBottom{height:15px;text-align:center;-moz-border-radius:0px 0px
    0px 10px;-webkit-border-radius:0px 0px 10px 10px;border-radius:0px 0px
    10px 10px;font-size:0px}.interfaceFooter{margin-top:10px;font-
    size:0px}.elementBottomDecor{display:inline-
    block;height:30px}.elementBottomDecorLeft{background:url
    (http://d2wb3jk3zoe588.cloudfront.net...footerLeft.png) top
    left no-repeat;width:125px}.elementBottomDecorRepeat{background:url
    (http://d2wb3jk3zoe588.cloudfront.net...oterRepeat.png) top
    left repeat-x;width:auto}.elementBottomDecorRight{background:url
    Donc si une personne peut m'aider pour réussir à enlever tout ce qui ne fait pas partie du lien, ça serait vraiment gentil s'il vous plait.

    Bonne journée.

  8. #8
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    C'est quand même bizarre que tes tests échouent

    En reprenant ton exemple de fichier ci-dessus, chez moi j'obtiens bien le résultat attendu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ grep -o 'http://[^)]*' fichier
    http://d2wb3jk3zoe588.cloudfront.net...r3d_masque.png
    http://d2wb3jk3zoe588.cloudfront.net...footerLeft.png
    http://d2wb3jk3zoe588.cloudfront.net...oterRepeat.png
    Essaie de protéger la parenthèse : grep -o 'http://[^\)]*'

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Si j’essaie de comprendre ta commande, ça me donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -o 'http://[^\)]*'
    grep avec l'option -o signifie qu'il faut chercher uniquement les parties de notre fichier qui correspondes à notre modèle.
    Les guillemets simples encadre notre modèle.
    http:// est une partie de notre modèle, dans notre cas il s'agit du début.
    [^\)] signifie que l'on ne veut pas ce qui se trouve à l'intérieur de cette classe, en l'occurrence il s'agit de la parenthèse fermée.
    * signifie que l'on répète plusieurs fois ce qui précède, si je comprend on continue à chercher des phrases commençant par http:// jusqu'à ce qu'il n'y en ai plus.
    Mais je ne suis pas sûr que ce soit ça car justement notre grep -o s'occupe déjà de tout lister.

    J'avoue que je suis un peu perdu concernant cette partie : [^\)]
    Je ne comprend pas sa fonction.

    Lorsque j'utilise cette commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -o 'http://.*\.png' exemple2.txt
    J'arive à obtenir ce qu'il y a après http:// mais ensuite le problème c'est qu'il m'en récupère de trop.

    Mais j'ai compris pourquoi, car en faite il récupère le premier et le deuxième puis s'arrête là et ensuite il m'affiche le reste du document alors que ce qui suit le deuxième lien est identique à ce qui suit le premier. Là j'avoue que je ne sais plus trop vers où chercher.

    Et j'avoue ne pas comprendre également pourquoi ça marche chez toi et pas chez moi.

    Je précise au cas où ça aurais son importance mais je suis sous windows en utilisant l'invité de commande, peut être que sous linux cela marcherait mais que ça merdouille sous windows.

  10. #10
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Citation Envoyé par Julien33400 Voir le message
    J'avoue que je suis un peu perdu concernant cette partie : [^\)]
    Je ne comprend pas sa fonction.
    En fait l'expression exacte est [^\)]*, et il faut comprendre qu'on recherche tout caractère à l'exception d'une parenthèse fermante, ou du moins qu'on recherche tout caractère jusqu'à ce qu'on rencontre une parenthèse fermante.

    Citation Envoyé par Julien33400 Voir le message
    Je précise au cas où ça aurais son importance mais je suis sous windows en utilisant l'invité de commande, peut être que sous linux cela marcherait mais que ça merdouille sous windows.
    Essaie de remplacer les quotes simples par des quotes doubles grep -o "http://[^\)]*". Essaie aussi sans protéger la parenthèse grep -o "http://[^)]*"

  11. #11
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 303
    Points : 12 802
    Points
    12 802
    Par défaut
    Bonjour,

    Je confirmes que chez moi, le grep sous cmd ne fonctionne correctement qu'avec des double quotes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    C:\Users\xxxxx>echo 'http://xxxxxfffffttooto)gogog' | grep -o 'http://[^)]*'
    http://
     
    C:\Users\xxxxx>echo 'http://xxxxxfffffttooto)gogog' | grep -o "http://[^)]*"
    http://xxxxxfffffttooto

  12. #12
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,
    Citation Envoyé par disedorgue Voir le message
    Je confirmes que chez moi, le grep sous cmd ne fonctionne correctement qu'avec des double quotes:
    Merci

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Merci, c'est super, ça marche au top.
    Merci à disedorgue, à zipe31 et à Flodelarab.

    Vous m'avez été d'une grande aide.

    Par contre savez-vous si le fait que je ne puisse pas faire une recherche sur mon fichier (plutôt énorme, 1393 lignes) est dû à une limitation de la commande ou alors c'est à cause de mon Windows.

    Car sur mon fichier entier ça me retourne aucun résultat.
    Sinon ce n'est qu'un moindre mal car il suffit que je le découpe en plusieurs sous fichier mais c'était histoire de mourir moins bête et d'éviter de m'embêter à découper mon fichier en x autres fichiers.

    Maintenant que j'ai mes URLs, Flodelarab m'avait conseillé d’utiliser la commande wget afin de récupérer directement mes images à partir de mes liens.
    J'essaye donc la commande.
    J'y arrive en faisant les commandes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\Julien>grep -o "http://[^)]*" exemple3.txt > liens.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\Julien>wget -i liens.txt
    Et ça me télécharge les images dans le répertoire où je me trouve actuellement.

    J'ai essayé en une seule ligne avec un pipe mais ça ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\Julien>grep -o "http://[^)]*" exemple3.txt > liens.txt | wget -i liens.txt
    Il doit y avoir quelque chose qui ne se passe pas correctement car il me renvoi :
    No URLs found in liens.txt.
    Donc si quelqu'un avait une idée de pourquoi ça bloque.

    Ensuite lorsque je télécharge mes images, j'aimerais qu'elles soient dirigées vers un dossier différent que celui où je me trouve et j'ai beau avoir essayé plusieurs combinaisons mais ça ne fonctionne pas.

    Mon dossier de destination serait : C:\Users\Julien\imagesRR

    Edit2 : Pour effectuer cette action je peux utiliser la commande mv.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\Julien>mv *.png imagesRR/
    Par contre, toujours le même problème, impossible de le faire en une ligne de cette façon.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\Julien>wget -i liens.txt | mv *.png imagesRR/
    Edit3: C'est bon j'ai trouvé pour ce soucis, il suffit d'utiliser cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wget -i liens.txt && mv *.png imagesRR/
    Edit4 : bon ba j'ai trouvé comment tout faire rentré sur une ligne, en fait à défaut d'utiliser un pipe j'utilise l'opérateur binaire &&.

    Ce qui fait que les commandes s'exécutent les unes après les autres si le code de sortie de chacune vaut 0.
    La commande a exécutée est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\Julien>grep -o "http://[^)]*" exemple3.txt > liens.txt && wget -i liens.txt && mv *.png imagesRR/
    Je ne sais pas si c'est la commande la plus adéquat pour ce que je veux faire mais ça fonctionne.

    Reste à savoir à présent comment ça se fait que je ne peux pas récupérer tout les liens de mon fichier d'origine et que ça ne m'affiche rien.

    Edit : Et aussi, est-ce que par hasard vous connaitriez une commande qui permettrait à partir d'un fichier unique d'en créer plusieurs par tranche de 100 lignes par exemple.

    Encore merci à tous de toute l'aide que vous m'avez fournie jusque là.

  14. #14
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Citation Envoyé par Julien33400 Voir le message
    Par contre savez-vous si le fait que je ne puisse pas faire une recherche sur mon fichier (plutôt énorme, 1393 lignes) est dû à une limitation de la commande ou alors c'est à cause de mon Windows.
    Peut-être la version Windows de grep

    J'aurais tendance à dire, qu'à utiliser des outils GNU/Linux, autant le faire sous un système du même nom

    Maintenant que j'ai mes URLs, Flodelarab m'avait conseillé d’utiliser la commande wget afin de récupérer directement mes images à partir de mes liens.
    J'essaye donc la commande. J'y arrive en faisant les commandes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\Julien>grep -o "http://[^)]*" exemple3.txt > liens.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\Julien>wget -i liens.txt
    Et ça me télécharge les images dans le répertoire où je me trouve actuellement.
    Je pense que Flodelarab faisait davantage allusion à une commande du genre wget -r -l1 --no-parent -A.gif http://www.server.com/dir/ (exemple extrait de la page de manuel de wget) qui permet de récupérer directement toutes les images d'une page.


    J'ai essayé en une seule ligne avec un pipe mais ça ne marche pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\Julien>grep -o "http://[^)]*" exemple3.txt > liens.txt | wget -i liens.txt
    Normal, la direction vers le fichier ([CODE]INLINE> liens.txt[/CODEINLINE]) est en trop
    grep -o "http://[^)]*" exemple3.txt | wget -i - devrait aller mieux

    Ensuite lorsque je télécharge mes images, j'aimerais qu'elles soient dirigées vers un dossier différent que celui où je me trouve et j'ai beau avoir essayé plusieurs combinaisons mais ça ne fonctionne pas.
    Mon dossier de destination serait : C:\Users\Julien\imagesRR
    Extrait du man wget :
    -P prefix’
    ‘--directory-prefix=prefix’


    Set directory prefix to prefix. The directory prefix is the directory where all other files and subdirectories will be saved to, i.e. the top of the retrieval tree. The default is ‘.’ (the current directory).

    Edit : Et aussi, est-ce que par hasard vous connaitriez une commande qui permettrait à partir d'un fichier unique d'en créer plusieurs par tranche de 100 lignes par exemple.
    man split

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par zipe31
    Peut-être la version Windows de grep

    J'aurais tendance à dire, qu'à utiliser des outils GNU/Linux, autant le faire sous un système du même nom
    Oui tu n'as pas tort surtout que j'ai déjà une VM tournant sous GNU/Linux, il faudrait juste que je la démarre.

    J'essaye cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\Julien>grep -o "http://[^)]*" exemple3.txt | wget -i -
    Ça marche au poil, j'avais juste omis le tiret ce qui m'a valu un pétage de câble jusqu'à ce que je le vois apparaître dans une doc et que je me rende compte que tu l'avais mis également.

    Et avec l'option -P, je viens enfin de trouver comment faire après de multiples essais et recherches sur le Web.

    Ma commande final ressemble alors à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\Julien>grep -o "http://[^)]*" exemple3.txt | wget -i - -P C:\Users\Julien\imagesRR
    Super, encore une fois tu m'aides vraiment.

    Il ne me reste plus qu'à trouver comment intégrer la commande split et la boucle sera bouclée.

    Mais ça ce sera pour cette nuit ou demain matin car il est temps de renter à la maison.

    Encore merci pour ton aide, je vais certainement revenir de toute façon pour la commande split si jamais je suis coincé.

    Car j'aimerais qu'au final tout se fasse d'une traite, mais bon si je ne peux pas ce n'est pas grave je découperai mon fichier puis j'effectuerai ma recherche par la suite.

    EDIT :

    Bon avant de tenté le split qui ne m'a pas l'air très compliqué à comprendre après à voir pour la mise en pratique, je me suis crée deux fichier afin de tester le grep sur plusieurs fichiers.

    J'ai donc essayé cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\Julien>grep -o "http://[^)]*" test.txt.*
    J'obtiens comme résultat :
    C'est cool, ça marche sur plusieurs fichiers, par contre il me rajoute à chaque fois en début de ligne le nom du fichier dans lequel se trouve mon lien que je recherche donc il faudrait que j'arrive à supprimer cette partie.

    Je continue mes recherches mais si quelqu'un à des pistes, n'hésitez pas à partager.

    Edit2:
    Ahah, j'ai trouvé une solution qui fonctionne mais ça me parait bien moche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\Julien>grep -o "http://[^)]*" test.txt.[a-z][a-z].txt | grep -o "http://[^)]*"
    Et ça marche également lorsque je fais la commande en entière:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\Julien>grep -o "http://[^)]*" test.txt.[a-z][a-z].txt | grep -o "http://[^)]*" | wget -i - -P C:\Users\Julien\imagesRR
    Ça avance, plus que le split à intégrer et ce sera bon, par contre ce ne sera peut être que demain.

    Edit3:

    Bon, et bien comme prévu c'est plus compliqué que ce qu'il n'y parait.

    J'ai procédé par étape afin de simplifier le plus possible.

    Je commence par cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\Julien\Fichier>split -l 20 fichier.txt fichier.txt.
    Ce qui fait que dans mon répertoire je me retrouve avec plusieurs nouveaux fichiers avec la syntaxe suivante :
    fichier.txt.aa jusqu'à fichier.txt.cr
    J'essaye d'utiliser mon grep dessus mais je n'ai malheureusement aucun résultat.

    J'ai également tenté en mettant un .txt à la fin de mon fichier mais ça n'a pas fonctionné.

    Mais lorsque je copie mot pour mot ce que j'ai dans mon fichier "fichier.txt.aa" dans un autre fichier "exemple2.txt" et que j'exécute à nouveau ma commande grep sur le fichier "exemple2.txt" ça marche très bien.

    Et lorsque je fait cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -o "http://[^)]*" fichier.txt.aa
    Je n'ai aucun retour en ligne de commande donc j'ai encore et toujours des problèmes.

    Bon voilà où j'en suis avant d'aller me coucher, ce n'est pas fameux.
    Ça ne me donne pas de résultat.

    Edit4:

    Comme on le sait tous la nuit porte conseil.

    J'ai finalement résolu tous mes problèmes.

    Pour commencer le grep ne marchait pas sur mon fichier texte car l'encodage du fichier était en UNICODE pour la raison que lorsque j'ai voulu le sauvegarder, une fenêtre d'avertissement m'indiquait que j'allais perdre des éléments si j'enregistrai en ANSI.
    Ce matin en essayant de trouver pourquoi mon grep ne marchait pas sur certain de mes fichiers contenant les même informations, j'ai remarqué que la seul différence était l'encodage.
    Donc je passe mon fichier en encodage ANSI et là miracle ça fonctionne du feu de dieu, même sur mon gros fichier de base, donc plus besoin de split.

    Ma commande final ressemble alors à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\Julien>grep -o "http://[^)]*" fichier.txt | wget -i - -P C:\Users\Julien\imagesRR
    Et j'obtiens comme résultat :
    FINISHED --2014-05-28 08:20:06--
    Total wall clock time: 39s
    Downloaded: 465 files, 14M in 4.3s (3.36 MB/s)
    Et bien, je vais pouvoir en faire défiler des images avant de trouver la bonne.

    Merci à tous pour votre aide, surtout à zipe31 qui m'a permis d'avancer afin que je puisse résoudre mon problème.

    Je vais donc pouvoir passer mon sujet en

    Bonne journée à tous et encore 1000 fois

  16. #16
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 266
    Points : 13 526
    Points
    13 526
    Par défaut
    Citation Envoyé par man grep
    Output Line Prefix Control

    -h, --no-filename
    Suppress the prefixing of file names on output. This is the default when there is only one file (or only standard input) to search.
    => '-h' supprime le préfixe des noms de fichier sur la sortie. C'est le comportement par défaut quand il n'y a qu'un fichier (ou seulement l'entrée standard) à examiner.

    donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -h -o "http://[^)]*" fichier.txt | wget -i -

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Merci pour cette précision Flodelarab.

    C'est plus joli comme ça plutôt que de faire un grep derrière un autre grep.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer des données dans un fichiers texte
    Par pitizone dans le forum Word
    Réponses: 1
    Dernier message: 10/04/2014, 15h49
  2. VBS, récupérer des valeurs dans un fichier texte
    Par hugodu13 dans le forum VBScript
    Réponses: 2
    Dernier message: 09/12/2010, 20h04
  3. Récupérer des données dans un fichier texte a part.
    Par morora69 dans le forum Général JavaScript
    Réponses: 40
    Dernier message: 17/06/2010, 09h54
  4. Réponses: 10
    Dernier message: 23/04/2007, 14h18
  5. Réponses: 2
    Dernier message: 16/01/2006, 19h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo