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

Linux Discussion :

Extraire une partie de texte


Sujet :

Linux

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 266
    Par défaut Extraire une partie de texte
    Bonjour à tous !

    Je cherche à résoudre ce problème... Voila mon fichier texte toto.txt

    --- Menu

    fgdfgdfg
    dfgdfgdfgdfg
    dgdfgdf
    dfgdfgd

    --- Fin

    --- Menu

    fsgdfhg
    fdghfgh
    fghfhg
    fghfhg

    --- Fin

    et ainsi de suite... Comment puis-je extraire les deux menus dans deux fichiers texte. Merci du coup de main.

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    exemple avec grep
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat fichier | grep -v ^- | grep -v ^$ > toto.txt
    ce qui concretement fait :
    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
    ptn:/hrmrf/fic>cat > /tmp/t
            Bonjour à tous !
     
    Je cherche à résoudre ce problème... Voila mon fichier texte toto.txt
     
    --- Menu
     
    fgdfgdfg
    dfgdfgdfgdfg
    dgdfgdf
    dfgdfgd
     
    --- Fin
     
    --- Menu
     
    fsgdfhg
    fdghfgh
    fghfhg
    fghfhg
     
    --- Fin
    ptn:/hrmrf/fic>cat /tmp/t | grep -v ^- | grep -v ^$ 
            Bonjour à tous !
    Je cherche à résoudre ce problème... Voila mon fichier texte toto.txt
    fgdfgdfg
    dfgdfgdfgdfg
    dgdfgdf
    dfgdfgd
    fsgdfhg
    fdghfgh
    fghfhg
    fghfhg
    ptn:/hrmrf/fic>rm /tmp/t
    ptn:/hrmrf/fic>
    si tu veux conserver une séparation il faudra ajouter des patterns de sélections.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Par défaut exemple avec grep, head et tail
    Un peu "bourin" peut-être mais peut donner des idées

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    fin_menu1=`grep -n Fin toto.txt | head -n 1 | cut -f1 -d:` # no ligne de la fin du menu1
    let "debut_menu2 = ${fin_menu1} + 1"  # no precedent + 1
     
    head -n $fin_menu1 toto.txt >| menu1.txt
    tail -n +$debut_menu2 toto.txt >| menu2.txt

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 266
    Par défaut
    Merci mais le problème est que j'ai X menus donc avec head et tail je ne peux pas fonctionner...
    Je me suis renseigné, c'est la fonction csplit qui peut faire cela.

    Je ne sais pas trop m'en servir. Mais ça marche...

    csplit -f toto toto.txt /"menu"/ {*}

    Merci à tous !

  5. #5
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Intéressant csplit, je ne connaissais pas

    csplit -z -f toto -b %02d.txt toto.txt '/^--- Menu/' {*}

    toto00.txt
    toto01.txt
    toto02.txt
    .../...

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 23/09/2013, 04h21
  2. [FPDF] extraire une partie de texte
    Par caty1 dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 20/04/2010, 09h32
  3. Extraire une partie du texte d'une cellule.
    Par arnold95 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 28/04/2009, 11h02
  4. extraire une partie d'un fichier texte
    Par Mydriaze dans le forum Langage
    Réponses: 5
    Dernier message: 15/06/2007, 12h46
  5. comment remplacer une partie de texte dans un champs
    Par patlapi dans le forum Paradox
    Réponses: 4
    Dernier message: 20/11/2003, 14h38

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