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

C Discussion :

Filtrer les séquences d'un fichier


Sujet :

C

  1. #1
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 317
    Par défaut Filtrer les séquences d'un fichier
    Bonjour,
    J'ai un ensemble d'entêtes avec leurs séquences:
    Voici un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >channel_109_read_10_twodirections_Corr
    CTAATTAATGAAAACGTCCTTGGCAAATGCT-TTC-GCAGTAGTTAGTCTTCAATAAATCCAAGAATTTCACCTCTGACAAT
    >channel_109_read_10_template
    TACTTTAATGAAAACGTCCTTGGCAAATGCT-TTCGCAGTAGTTAGTCTTCAATAAATCCAAGAATTTCACCTCTGACAATTGAATACTGATGCCCCCGACCGTCC
    >channel_42_read_11_twodirections
    TCCTACCGCACCCTGCATTCGAACCGACTTCTAATGTTCGACCGCAAACC
    >channel_396_read_70_complement_CC
    ATATCGGAGCCAATGTATATCGAGAAAATCCGTGAAGATATCAGACAGGTAGAGAACCTTTTAAATAAAGAAAATGTAAAGATTACGGT
    >channel_113_read_8_twodirections
    CTAAGGTTTAGTCATGGAGAAGACAAGTTCGAAAAGAGTTTGGAAACGAATTCGAGTAGGCTTGTCGTTCGTTATGTTTTTGTAAATGGCCTCGTCAAAC
    Comme vous voyez il y a des séquences qui contiennent "template" et compelement et moi je veux éliminer ces séquences avec leurs entêtes.
    Est-ce que vous pouvez m'aider sur ce problème?
    Merci

  2. #2
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/channel_[0-9]\+_read_[0-9]\+_template/{N;d;}' fichier.txt

  3. #3
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 317
    Par défaut
    Citation Envoyé par Matt_Houston Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/channel_[0-9]\+_read_[0-9]\+_template/{N;d;}' fichier.txt
    excusez-moi est-ce que vous pouvez m'expliquer comment faire?
    MErci

  4. #4
    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
    salut,

    je propose, avec le souci de me faire comprendre par ceux qui me liront qui s'inscrira dans la continuité de la discussion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ sed -e '/template\|complement/,/^[^>]/d' fichier

  5. #5
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 317
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    salut,

    je propose, avec le souci de me faire comprendre par ceux qui me liront qui s'inscrira dans la continuité de la discussion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ sed -e '/template\|complement/,/^[^>]/d' fichier
    elle ne permet pas de supprimer la séquence et son entête où il y a le mot "template" ou complement".

  6. #6
    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
    Citation Envoyé par mido1951 Voir le message
    elle ne permet pas de supprimer la séquence et son entête où il y a le mot "template" ou complement".
    si

  7. #7
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    sinon, plus direct, grep -v -A1 -e "_template" -e "_complement_" fichier.txt > outputEt si tu tiens à le faire en C, il "suffit" de découper le travail en:
    lecture ligne a ligne d'un fichier (fgets?).
    reconnaitre les lignes en-têtes (ils commencent par '>')
    détecter si un en-tête correspond à une ligne acceptable
    utiliser une variable pour savoir si la prochaine ligne de données doit être acceptée ou non.
    écrire une ligne dans un fichier.
    écrire les morceaux dans une boucle.

  8. #8
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Citation Envoyé par mido1951 Voir le message
    Comme vous voyez il y a des séquences qui contiennent "template" et compelement et moi je veux éliminer ces séquences avec leurs entêtes.
    Woké j'avais lu « complètement », je voyais pas où vous vouliez en venir tous avec vos complement.. Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/channel_[0-9]\+_read_[0-9]\+_\(template\|complement\)/{N;d;}' fichier.txt
    Jolie commande de BufferBob également, moins stricte mais plus concise.


    Citation Envoyé par leternel Voir le message
    sinon, plus direct, grep -v -A1 -e "_template" -e "_complement_" fichier.txt > output
    Ça ne passe pas avec GNU grep 2.22. Je ne suis d'ailleurs pas certain qu'il soit possible de le faire avec grep uniquement sans utiliser les extensions perl.

  9. #9
    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
    Citation Envoyé par Matt_Houston Voir le message
    Jolie commande de BufferBob également, moins stricte mais plus concise.
    disons la différence avec la tienne c'est que tu effaces uniquement la ligne qui suit et moi je postule que dans le cas où il y a plus d'une séquence (donc plus d'une ligne, mais rien ne nous dit que ça peut être le cas pour autant ) elles commencent toutes par un >, mais je serais prêt à parier qu'on peut faire encore plus concis, y'a de vrais pro du sed dans les parages (je n'en suis pas un )

    Ça ne passe pas avec GNU grep 2.22. Je ne suis d'ailleurs pas certain qu'il soit possible de le faire avec grep uniquement
    je confirme et j'ai les mêmes doutes, @leternel, c'est testé/avéré ta commande ? (si oui, quelle version de grep)

    Citation Envoyé par leternel Voir le message
    Et si tu tiens à le faire en C (...)
    à mon avis le PO s'est juste planté de forum...

  10. #10
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    non, mon grep n'est pas avéré.
    En fait, comme il s'agit de filtrer (et non de selectionner), ca ne marche pas.

Discussions similaires

  1. Réponses: 0
    Dernier message: 31/05/2011, 18h41
  2. Filtrer les lignes d'un fichier log.
    Par nioniousa dans le forum Développement de jobs
    Réponses: 8
    Dernier message: 27/03/2010, 00h51
  3. [JFileChooser] filtrer les fichiers
    Par maxlegrand dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 25/06/2007, 09h36
  4. [AIDE]Filtrer les nom de fichier
    Par Diablo_22 dans le forum Langage
    Réponses: 3
    Dernier message: 15/05/2007, 16h01
  5. Filtrer les fichiers
    Par shikakus dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 25/02/2007, 17h46

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