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 :

Problème de "champ" absent parfois


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 14
    Par défaut Problème de "champ" absent parfois
    Coucou,

    C'est encore moi
    [note de la modération]
    suite de la discussion : [bash]Traitement d'un fichier txt/html
    [/note]

    Bon j'ai réussi tout ce qui me posait pb mais j'ai un nouveau problème très différent..

    en gros j'ai un txt qui ressemble a ça :
    blabla
    TITRE1
    blabla
    GENRE1
    blabla
    NOTE1
    blabla
    BANDEANNONCE1
    blabla
    TITRE2
    blabla
    GENRE2
    blabla
    NOTE2
    blabla
    BANDEANNONCE2
    blabla
    TITRE3
    blabla
    GENRE3
    blabla
    BANDEANNONCE3
    blabla
    TITRE4
    blabla
    GENRE4
    blabla
    NOTE4
    blabla


    Et je veux recupérer dans un fichier :
    TITRE1
    GENRE1
    NOTE1
    BA1
    TITRE2
    ect

    Sauf que comme certains films n'ont pas de notes, d'autre pas de bande annonce, ou encore ni l'un ni l'autre j'ai un probleme de correspondance.

    J'ai essayé comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    for (( i=0; i<=100; i++));
    do
    	egrep -m 1 \<meta\ property\=\"og\:title\" | cut -d\" -f4 | sed -re "s/'/\'/g" >> AZER.txt #les titres
    	egrep -m 1 ratingValue | sed 's/^[ \t]*//;s/[ \t]*$//' | cut -d\" -f4 >> AZER.txt #les notes
    	egrep -m 1 allowfull | cut -d\/ -f3-6 | cut -d\" -f1 >> AZER.txt #les bandes annonce
    	egrep -m 1 td\ data-heading\=\"Genre\" | cut -d\< -f3 | cut -d\> -f2 | sed -re "s/'/\'/g" >> AZER.txt # les genres
     
    done < Prem*.txt
    Mais des qu'un film ne possède pas de note ou de BA ça décale tout et je n'arrive pas à regler le pb (en gros si y'a pas de notes on continue, pareil pour les ba)

    En faisant tourner le code avec juste les titres et les genres (comme chaque film à un titre et un genre) ça marche et rend ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    Le Retour de Mary Poppins
    Film fantastique
    Aquaman
    Film fantastique
    L'Empereur de Paris
    Drame
    Le Gendre de ma vie
    Comédie
    Wildlife : une saison ardente
    Drame
    Masha et Michka : les nouvelles aventures
    Autre
    The Bookshop
    Drame
    Maya
    Drame
    The Happy Prince
    Drame
    Basquiat : un adolescent à New York
    Film documentaire
    Kanaa
    Drame
    Seethakaathi
    Drame
    Maari 2
    Film d'action
    Adanga Maru
    Film d'action
    Sonar
    Drame
    De boue
    Drame
    Mon père
    Drame
    Grass
    Drame
    L'Oeil du tigre
    Film documentaire
    sinon ça donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    Le Retour de Mary Poppins
    2.4
    www.dailymotion.com/embed/video/x6tqzou?autoPlay=1
    Film fantastique
    Aquaman
    1.7
    www.dailymotion.com/embed/video/x6xmdq0?autoPlay=1
    Film fantastique
    L'Empereur de Paris
    2.4
    www.dailymotion.com/embed/video/x6w4iqz?autoPlay=1
    Drame
    Le Gendre de ma vie
    2.6
    www.dailymotion.com/embed/video/x6wf3ks?autoPlay=1
    Comédie
    Wildlife : une saison ardente
    4
    www.dailymotion.com/embed/video/x6ycr5h?autoPlay=1
    Drame
    Masha et Michka : les nouvelles aventures
    1.5
    www.dailymotion.com/embed/video/x6z9bg2?autoPlay=1
    Drame
    Basquiat : un adolescent à New York
    3
    www.dailymotion.com/embed/video/x6ycov1?autoPlay=1
    Drame
    Grass
    3
    www.dailymotion.com/embed/video/x6ycsbd?autoPlay=1
    Film documentaire
    Merci d'avance

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 388
    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 388
    Par défaut
    Bonjour,

    Avant de donner une idée, peut-on m'expliquer le code donné ?
    Car pour moi, il ne fonctionne pas...

    Sinon, dans la discussion précédente, j'ai fourni un code qui aurait pu t'aider (la partie boucle pour lire un fichier ligne à ligne et savoir qu'elle filtre on a appliqué).

    Comme l'avait dit N_BaH, si on a auparavant établi un algo que l'on développe ensuite, c'est plus simple à modifier.

  3. #3
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    (re-)salut,

    pour info :
    http://www.allocine.fr/service/conditions.html#cgu
    8. Obligations et responsabilité des Utilisateurs
    • 8.1. Utilisation du Site et des Services
      • L’Utilisateur est ainsi tenu de ne pas utiliser les Services pour notamment (...) utiliser ou lancer un système automatisé (notamment robot, spider (...)
    ajoute à ça -et comme on te l'a déjà dit dans la discussion précédente- faire tout ça avec bash et les commandes gnu est malgré tout hyper galère et pas très fiable, d'autant que tu restes avec grep/sed/cut alors que d'autres outils plus performants t'ont été proposé dans la discussion précédente, perso à ce stade je pense que j'en aurai déjà eu marre et j'aurai opté pour Python + BeautifulSoup par exemple

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 14
    Par défaut
    ajoute à ça -et comme on te l'a déjà dit dans la discussion précédente- faire tout ça avec bash et les commandes gnu est malgré tout hyper galère et pas très fiable, d'autant que tu restes avec grep/sed/cut alors que d'autres outils plus performants t'ont été proposé dans la discussion précédente, perso à ce stade je pense que j'en aurai déjà eu marre et j'aurai opté pour Python + BeautifulSoup par exemple
    En fait j'ai pas le choix, étant donné que c'est un devoir donné par l'un de mes professeur.

    Avant de donner une idée, peut-on m'expliquer le code donné ?
    Car pour moi, il ne fonctionne pas...
    Sachant que Prem*.txt correspond au curl des pages du site premiere pour chaque film, mis à la suite les uns des autres.

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 388
    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 388
    Par défaut
    Citation Envoyé par Chadoxis Voir le message
    Sachant que Prem*.txt correspond au curl des pages du site premiere pour chaque film, mis à la suite les uns des autres.
    Et ?
    Explique ton code (je persiste, celui-ci ne fonctionne pas)

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 14
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for (( i=0; i<=100; i++));
    do
    	egrep -m 1 \<meta\ property\=\"og\:title\" | cut -d\" -f4 | sed -re "s/'/\'/g" >> AZER.txt #les titres
    	egrep -m 1 ratingValue | sed 's/^[ \t]*//;s/[ \t]*$//' | cut -d\" -f4 >> AZER.txt #les notes
    	egrep -m 1 allowfull | cut -d\/ -f3-6 | cut -d\" -f1 >> AZER.txt #les bandes annonce
    	egrep -m 1 td\ data-heading\=\"Genre\" | cut -d\< -f3 | cut -d\> -f2 | sed -re "s/'/\'/g" >> AZER.txt # les genres
     
    done < Prem*.txt
    Pour i allant de 0 à 100 (il n'y aura jamais 100 films par semaine) on fait :
    - recuperer la premiere occurence de <meta\ property\=\"og\:title\" dans Prem*.txt, que l'on rend "beau" avec les cut et sed, et on le met dans AZER.txt, donc on récup le TITRE1
    - recuerer la premiere occurence de ratingValue et le mettre dans AZER.txt, donc on récup la NOTE1
    ect

    ça marche très bien chez moi, les seuls pb sont du au fait que quand il n'y a pas de note, ça saute tous les films jusqu'au suivant possédant une note.

  7. #7
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 388
    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 388
    Par défaut
    Si ton code précédent fonctionnait, le code suivant devrait retourner les 2 lignes (titi et toto) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ echo -e "titi\ntoto" | for (( i=0 ; i<=2 ; i++ )); do egrep -m 1  toto  ; egrep -m 1 titi ; done
    toto
    Malheureusement, ça ne retourne que toto qui est la recherche du premier egrep...

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/11/2005, 13h04
  2. Problème de champs Paradox type : mémo formaté
    Par mjp dans le forum Bases de données
    Réponses: 6
    Dernier message: 05/04/2005, 22h13
  3. Problème de champs texte
    Par Benjamin76 dans le forum Access
    Réponses: 1
    Dernier message: 07/01/2005, 12h13
  4. Problème de champs vierge dans un regroupement
    Par GrisburT dans le forum Oracle
    Réponses: 8
    Dernier message: 09/12/2004, 12h08
  5. [CR7][VB6]Problème de champs
    Par jcdupayage dans le forum SDK
    Réponses: 5
    Dernier message: 19/07/2004, 15h54

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