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 :

rediriger les résultats d'un programme dans un fichier avec format spécifié


Sujet :

Shell et commandes GNU

  1. #1
    Membre habitué Avatar de condor_01
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    294
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 294
    Points : 133
    Points
    133
    Par défaut rediriger les résultats d'un programme dans un fichier avec format spécifié
    Salut à tous,
    J'ai un souci pour rediriger les résultats d'un programme vers un fichier.
    En fait, mon programme affiche des résultats au fur et à mesure de son avancement.
    Je dois pouvoir concaténer ces résultats pour créer un fichier log.
    Mon programme affiche d'abord les 2 colonnes:
    puis 3 autres colonnes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    M  1  4
    M  5  6
    M  3  10
    M  4  2
    Je dois rediriger la 2eme colonne du premier résultat et la 2 et 3eme colonne du deuxième résultat. Je dois don avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    1  1  4
    4  5  6
    5  3  10
    6  4  2
    Mon programme se lance en ligne de commande.
    J'ai pensé à un grep associée en pipe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./mon_programme || grep "M" ... || grep "R"
    mais je ne sais pas comment procéder exactement
    The great glory is not in never falling but in rising every time we fall.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Ton "programme" est un script? Si c'est le cas, le plus simple est de rediriger la sortie std vers un fichier après manipulation awk ou cut.

    Sinon, il va falloir réfléchir!
    :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
    :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
    Jabber: ripat at im.apinc.org

  3. #3
    Membre éclairé 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
    Points : 652
    Points
    652
    Par défaut
    2 outils pratiques :

    - option w (pour Write) dans sed
    - paste : concaténation de 2 fichiers côte à côte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ./ton_programme | sed -n -e 's/^R  //w tmpR' -e  's/^M  //w tmpM' 
    paste -d" " tmpR tmpM > log.txt
    rm tmpR tmpM
    cat log.txt
    1 1 4
    4 5 6
    5 3 10
    6 4 2
    Loi de Murphy:
    La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
    La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
    Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.

  4. #4
    Membre habitué Avatar de condor_01
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    294
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 294
    Points : 133
    Points
    133
    Par défaut
    Merci pour vos réponses.
    J'ai un autre petit souci. J'essaie, à partir des résultats de ma simulation d'extraire les lignes contenant l'expression N_STATS et les rediriger vers un fichier log1.txt et en même temps extraire les lignes contenant l'expression L_STATS et les rediriger vers un fichier log2.txt
    J'ai essayé la commande suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./mon_programme | sed -n -e '/N_STATS/p //w log1.txt' -e '/L_STATS/p //w log2.txt'
    mais ça ne marche pas
    The great glory is not in never falling but in rising every time we fall.

  5. #5
    Membre éclairé 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
    Points : 652
    Points
    652
    Par défaut
    Différent du précédent cas où l'on faisait une opération de substitution avant d'écrire la ligne.
    Dans le cas présent, tu te contentes de sélectionner et écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./mon_programme | sed -n -e '/N_STATS/w log1.txt' -e '/L_STATS/w log2.txt'
    Loi de Murphy:
    La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
    La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
    Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.

Discussions similaires

  1. Réponses: 18
    Dernier message: 14/08/2011, 16h15
  2. Réponses: 3
    Dernier message: 08/07/2011, 17h00
  3. Réponses: 9
    Dernier message: 16/02/2010, 20h50
  4. Réponses: 2
    Dernier message: 07/04/2008, 17h37
  5. [SQL] Comment je peux mettre les résultat d'une requete dans un fichier
    Par Maria1505 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 10/12/2006, 22h44

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