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 :

Affichage conditionné commandes shell


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 63
    Par défaut Affichage conditionné commandes shell
    Bonjour à tous,

    J'ai un fichier de 235 mo que je n'arrive pas à ouvrir, j'ai essayé de le splitter en gardant que les champs importants pour mes tests.
    les parties que je voudrais garder ont cette forme:

    <DescriptorRecord>
    ...............
    <TreeNumber>D...
    .......................
    </DescriptorRecord>
    ma condition est si je retrouve le motif<TreeNumber>D... alors je vais afficher tous les blocs qui ont des intervalles partant du motif :<DescriptorRecord> ,incluant le motif de ma condition <TreeNumber>D.. jusqu'au motif </DescriptorRecord>

    J'ai essayé avec la commade sed:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -n '/<TreeNumber>D/{/<DescriptorRecord>/,/<\/DescriptorRecord>/p}' fichier.txt >résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -n '/<DescriptorRecord>/,/<TreeNumber>D/p;/<TreeNumber>D/,/<\/DescriptorRecord>/p'
    ça me retourne soit un fichier vide ou bien tout mon fichier d'origine.
    Pourriez vous m'aider svp.
    Je vous remercie à l'avance.

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

    Parfois, le souci avec des fichier à la xml, c'est qu'il n'y a pas de retour chariot...
    que retourne la commande ?
    PS: dans ta 2éme commande sed, il manque un '/' tout au début...

  3. #3
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 352
    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 352
    Par défaut
    Bon, j'ai mal lu la question:

    L'une des solutions possibles pour que cela fonctionne:
    -Récuperer dans l'espace de travail le bloc complet <DescriptorRecord>...</DescriptorRecord>
    -Afficher l'espace de travail si le bloc complet possède <TreeNumber>D

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 662
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 662
    Par défaut
    J'ai un fichier [...] que je n'arrive pas à ouvrir
    pourtant, sed y arrive bien, lui
    ...
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 63
    Par défaut
    la commande que tu m'a demandé de faire disedorgue me retourne 9743570 lignes.
    oui merci, j'ai oublié de le mettre le "/" en écrivant le message sur le forum.

    Oui N_BaH sa me prends un peu de temps avec la commande sed. Mais je n'arrive pas à l'ouvrir il est trop grand.

    Je voudrais juste savoir comment je peux faire un affichage conditionnel (condition=motif=<TreeNumber>D) que se soit avec sed ou une autre commande shell.
    pour pouvoir afficher les blocs qui contiennent:
    <DescriptorRecord>
    ...............
    <TreeNumber>D...
    .......................
    </DescriptorRecord>
    Je vous remercies à l'avance pour votre aide.

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour

    Problème intéressant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -n '/<TreeNumber>D/{/<DescriptorRecord>/,/<\/DescriptorRecord>/p}' fichier.txt >résultat
    J'aurais plutôt fait le contraire. Le contexte d'abord, le motif ensuite. Comme il lit ligne par ligne. Il a pu passé le début (Descriptor...) avant d'en avoir besoin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -n '/<DescriptorRecord>/,/<\/DescriptorRecord>/{/<TreeNumber>D/p}' fichier.txt >résultat
    Après un rapide test, ça semble être le cas.

  7. #7
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 352
    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 352
    Par défaut
    En fait non, il veut afficher le bloc si dans celui-ci il y a le motif...

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par sab113 Voir le message
    J'ai un fichier de 235 mo que je n'arrive pas à ouvrir,
    Tu n'arrives pas à l'ouvrir avec quel outil?

    Je suis pratiquement certain qu'emacs devrait y arriver!

  9. #9
    Membre confirmé
    Inscrit en
    Septembre 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 63
    Par défaut
    Merci Flodelarab, disedorgue et jack-ft pour toutes vos réponses.
    J'arrive à le splitter avec la commande que Flodelarab ma s'uggéré:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -n '/<DescriptorRecord>/{:z;N;/<\/DescriptorRecord>/!b z;/<TreeNumber>D/p}'  fichier >resultat
    C'est un fichier Xml, je vais essayé d'utiliser emacs merci encore pour votre aide à tous.

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

Discussions similaires

  1. Modification de l'affichage d'une commande shell
    Par supcomingenieur dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 13/05/2013, 15h40
  2. Réponses: 1
    Dernier message: 21/04/2011, 13h14
  3. [Debutant] Commande shell
    Par drosophile dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 21/04/2005, 15h06
  4. commande shell dans un programme
    Par diefo dans le forum C
    Réponses: 3
    Dernier message: 15/08/2003, 13h37
  5. [VB6] comment savoir si la commande shell est terminée ?
    Par ghyscharlotte dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 30/07/2003, 19h12

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