Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/11/2007, 00h16   #1
Membre régulier
 
Avatar de condor_01
 
Étudiant
Inscription : avril 2006
Messages : 294
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2006
Messages : 294
Points : 92
Points : 92
Envoyer un message via Skype™ à condor_01
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 :
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 :
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 :
./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.
condor_01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2007, 10h06   #2
Membre émérite
 
Inscription : mai 2004
Messages : 709
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2004
Messages : 709
Points : 852
Points : 852
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
ripat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2007, 12h31   #3
Membre expérimenté
 
Avatar de BlaireauOne
 
Inscription : mars 2007
Messages : 469
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2007
Messages : 469
Points : 576
Points : 576
2 outils pratiques :

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

Code :
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.
BlaireauOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2007, 23h16   #4
Membre régulier
 
Avatar de condor_01
 
Étudiant
Inscription : avril 2006
Messages : 294
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2006
Messages : 294
Points : 92
Points : 92
Envoyer un message via Skype™ à condor_01
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 :
./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.
condor_01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2007, 20h55   #5
Membre expérimenté
 
Avatar de BlaireauOne
 
Inscription : mars 2007
Messages : 469
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2007
Messages : 469
Points : 576
Points : 576
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 :
./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.
BlaireauOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h26.


 
 
 
 
Partenaires

Hébergement Web