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 POSIX Discussion :

Manipuler un fichier plat


Sujet :

Shell et commandes POSIX

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Manipuler un fichier plat
    Bonjour mes amis
    j'ai un fichier txt que je voudrai faire une recherche d'une chaîne de caractère bien précise en suite supprimer n lignes avant et après cette chaîne (dans mon cas si chaîne trouvée alors je dois remonté de 19 lignes ensuite supprimer 48 lignes en bas)
    je m'explique le fichier contient plusieurs formulaires et chaque formulaire est de 48 lignes, donc je voudrai supprimer tout les formulaires contenant une chaîne de caractère par exemple "SARL TOTO"
    merci d'avance

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

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

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    un exemple vaut souvent mieux qu'un long discours, dommage.
    de ce que tu décris je pense que sed est la commande que tu cherches

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    salut,

    un exemple vaut souvent mieux qu'un long discours, dommage.
    de ce que tu décris je pense que sed est la commande que tu cherches
    j'ai pas d'exemples à présent, le fichier contient des convocations clients parfois plus de 1000 convocation et je voudrai supprimer celles avec un objet bien précis tout en gardant le format d'impression qui est de 48 lignes par convocation
    je connais la commande sed mais je ne pense pas qu'elle fera l'affaire enfin j'attend vos lumières merci

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

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

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par smit13 Voir le message
    j'ai pas d'exemples à présent
    ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    paragraphe 1 : OK
    ligne 1 blabla
    ligne 2 coincoin
    ligne 3 tagada
    paragraphe 2 : PAS OK
    ligne 1 truc
    ligne 2 machin
    ligne 3 pouet
    paragraphe 3 : OK
    ligne 1 bidule
    ligne 2 tsoin
    ligne 3 burp
    est ce qu'on appelle un fichier d'exemple, il permet de poser le contexte des données sur lesquelles on travaille, et pour peu qu'on fasse la même chose avec le résultat attendu, c'est beaucoup plus parlant qu'une explication maladroite de plusieurs lignes, accessoirement c'est le signe que l'on ne s'en fout pas et qu'on essaye de faire au moins quelque effort avant de demander aux autres qu'ils prennent de leur temps pour nous aider.

    je connais la commande sed mais je ne pense pas qu'elle fera l'affaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ sed '/PAS OK/,+3d' fichier
    paragraphe 1 : OK
    ligne 1 blabla
    ligne 2 coincoin
    ligne 3 tagada
    paragraphe 3 : OK
    ligne 1 bidule
    ligne 2 tsoin
    ligne 3 burp
    c'est ça que tu cherches ?

  5. #5
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    merci BufferBob pour votre exemple
    je précise que je suis sous AIX donc erreur d'analyse syntaxique de la fonction
    $ sed '/PAS OK/,+3d' fichier
    le + pose problème sous unix
    sinon ci joint un exemple
    je voudrai un script qui fait une recherche sur OBJET : PAS OK en suite supprimé les convocations concernées cad les lignes 96 à 142 et de 190 à 237

    merci encore pour vos précisions
    Fichiers attachés Fichiers attachés

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

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

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par smit13 Voir le message
    je précise que je suis sous AIX donc erreur d'analyse syntaxique de la fonction le + pose problème sous unix
    il aurait mieux valu poser la question dans le forum Unix/AIX dans ce cas ^^
    je ne connais pas les spécificités de sed sous AIX et n'en ai pas sous la main pour tester, désolé.

  7. #7
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    il aurait mieux valu poser la question dans le forum Unix/AIX dans ce cas ^^
    je ne connais pas les spécificités de sed sous AIX et n'en ai pas sous la main pour tester, désolé.
    j'ai aussi une machine sous ubuntu que je peux l'utilisé pour ce traitement si vous avez la solution
    merci

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

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

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par smit13 Voir le message
    j'ai aussi une machine sous ubuntu que je peux l'utilisé pour ce traitement si vous avez la solution
    non, j'ai du Linux aussi sous la main, mais Linux != AIX, donc ça ne sert à rien.
    sous Linux la solution à base de sed que j'ai fourni plus haut fonctionne, manifestement pas sous AIX, il faudra voir avec ceux qui connaissent AIX pour trouver un contournement

  9. #9
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    désolé mais votre solution ne supprime que les lignes qui viennent après l'objet recherché, j'ai d'autres lignes a supprimer plus haut, il faut que je supprime toute la convocation

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

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

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par smit13 Voir le message
    désolé mais votre solution ne supprime que les lignes qui viennent après l'objet recherché, j'ai d'autres lignes a supprimer plus haut, il faut que je supprime toute la convocation
    ok au temps pour moi j'avais pas vu ton fichier d'exemple plus haut, du coup effectivement c'est un peu plus compliqué avec sed (pour moi en tous cas), qu'à cela ne tienne, awk peut lui aussi faire le job

    par contre, plus haut tu dis d'abord que chaque convocation fait 48 lignes, dans ton fichier d'exemple la première et la dernière convocations font 47 lignes, et les autres n'en font que 46, en clair on ne peut même pas travailler dessus (et accessoirement s'il contenait moins de lignes ce serait plus lisible)

    enfin tu attends beaucoup de réponses et des précises, mais qu'as-tu fais toi jusqu'à présent ? tu as tenté des trucs avec sed ou autre ?

    voici une solution en awk sur la base du fichier que tu donnes plus haut, les adaptations éventuelles sont laissées en exercice :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '/CONVOCATION/{if (!match(s, /OBJET : PAS OK/)){print s};s=$0;next} {s=s "\n" $0}' test46.txt
    bon courage pour la suite

  11. #11
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    [
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '/CONVOCATION/{if (!match(s, /OBJET : PAS OK/)){print s};s=$0;next} {s=s "\n" $0}' test46.txt
    merci beaucoup BufferBob ton script ma beaucoup aider
    problème résolut
    merci encore

  12. #12
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Citation Envoyé par smit13 Voir le message
    je précise que je suis sous AIX donc erreur d'analyse syntaxique de la fonction le + pose problème sous unix
    Il faudrait qu'un modo modifie le titre, qui indique bien "Linux", histoire d'éviter d'induire les futurs lecteurs en erreur.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  13. #13
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Il faudrait qu'un modo modifie le titre, qui indique bien "Linux", histoire d'éviter d'induire les futurs lecteurs en erreur.
    ça marche aussi sous AIX !

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/05/2010, 12h47
  2. Réponses: 3
    Dernier message: 26/08/2008, 14h45
  3. Lire des fichiers iso sous linux
    Par wodel dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 28/11/2005, 10h17
  4. Fichier effacés sous linux ....
    Par vbcasimir dans le forum Administration système
    Réponses: 4
    Dernier message: 09/12/2004, 09h28
  5. Réponses: 5
    Dernier message: 06/03/2003, 13h27

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