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 :

commande sed pour découper fichier


Sujet :

Linux

  1. #1
    Membre à l'essai
    Homme Profil pro
    libre
    Inscrit en
    Janvier 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : libre
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2005
    Messages : 21
    Points : 19
    Points
    19
    Par défaut commande sed pour découper fichier
    j'ai découvert la commande sed qui est très puissante et je souhaitais l'utiliser pour me permettre à partir d'un fichier qui contient x lignes de pour en extraire la totalité mais dès qu'il croise le caractère suivant :From
    puis X-Mozilla-Status sur la ligne du dessous et bien il recréé un nouveau fichier de sortie pour y mettre la suite.

    Y-a-il moyen de faire cela avec sed ou une autre fonction

    bref en clair je cherche à splitter un fichier mais à partir de son contenu.

    Merci pour votre aide

  2. #2
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 843
    Points
    4 843
    Par défaut
    C'est pas très clair mais avec sed tu peux pas, à ma connaissance.

    Je te conseille de passer par un petit script Perl.

  3. #3
    Membre à l'essai
    Homme Profil pro
    libre
    Inscrit en
    Janvier 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : libre
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2005
    Messages : 21
    Points : 19
    Points
    19
    Par défaut
    en fait j'ai un fichier que je veux scinder en plusieurs fichiers en fonction du contenu c'est à dire dès qu'il rencontre les caractères From sur une ligne puis X-Mozilla-Status sur la ligne suivante .

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 196
    Points : 358
    Points
    358
    Par défaut
    csplit se rapproche de ce que tu veux faire mais il créé des fichiers et ne doit pas pouvoir tester plus d'une ligne.

    en bash ton script ne serait pas bien compliqué
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ...
    while read line
    do
         case "$line" in
               From:*) FromIsPrevious="true" ...;;
               X-Mozilla-Status* ) if test -s FromIsPrevious  ...   outputFile="...";;
               *) echo "$line" >> $outputFile ...;;
         esac 
     
    done < inputFile.txt

  5. #5
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Points : 2 560
    Points
    2 560
    Par défaut
    Bonjour,
    je voudrais juste ajouter une remarque par rapport à la réponse de mvvvv
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    *) echo "$line" >> $outputFile ...;;
    il vaudrait mieux utiliser >> au lieu de >
    Ensuite, ce $outputFile, de manière logique, devrait avoir une nouvelle valeur à chaque fois que tu dois splitter (penser par exemple à une incrémentation)
    Et aussi, ne pas oublier de mettre $FromIsPrevious à "false" ou autre à chaque fois que tu as fini de splitter vers un nouveau fichier.
    Enfin bref, ce que mvvvv t'as montré est une bonne façon de faire, et c'était pour t'ouvrir la voie, mais à toi de penser aux petits détails qui restent
    Cordialement,

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 196
    Points : 358
    Points
    358
    Par défaut


    corrigé pour l'ajout en fin de fichier

    merci

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 587
    Points : 19 470
    Points
    19 470
    Par défaut
    test -s teste si un fichier existe et est non-vide.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 196
    Points : 358
    Points
    358
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    test -s teste si un fichier existe et est non-vide.
    test -z

    serait plus mieux en effet

  9. #9
    Membre à l'essai
    Homme Profil pro
    libre
    Inscrit en
    Janvier 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : libre
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2005
    Messages : 21
    Points : 19
    Points
    19
    Par défaut
    merci pour votre aide, je vais testé l'ensemble dès que j'aurais un moment.

Discussions similaires

  1. commande sed pour supprimer
    Par tijocanard dans le forum Linux
    Réponses: 8
    Dernier message: 05/06/2009, 13h37
  2. Réponses: 3
    Dernier message: 24/04/2009, 09h12
  3. commande sed pour supprimer des commentaires
    Par Garulfo dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 08/03/2008, 19h09
  4. La commande sed renvoie un fichier vide
    Par aaronw dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 29/09/2006, 11h46
  5. [BAT] commande AT pour exécuter fichier .bat
    Par PatLogan dans le forum Scripts/Batch
    Réponses: 10
    Dernier message: 04/01/2005, 16h51

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