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 27/08/2011, 18h56   #1
Candidat au titre de Membre du Club
 
Inscription : septembre 2010
Messages : 11
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 11
Points : 14
Points : 14
Par défaut envoyer chaque ligne d'un fichier vers une liste de fichiers

Bonsoir,

Je dispose d'un fichier dont je souhaiterais envoyer certaines lignes vers un fichier différent. Les fichiers de destination sont listés en ligne au sein d'un autre fichier.
Y a-t-il un moyen efficace de faire ceci sans parser avec des boucles ?
J'ai essayé le code suivant mais il se trouve que tous les fichiers de destination contiennent l'intégralité des lignes sélectionnées...
Code :
grep "sentence1" JuliusOutput |tee $(cat uttlist)
Je recherche toutes les lignes de JuliusOutput contenant le mot "sentence1", le fichier uttlist contenant le chemin des fichiers cibles.

Merci d'avance
cobaltsixty est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/08/2011, 20h00   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 071
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 071
Points : 4 154
Points : 4 154
Bonjour,

Citation:
Y a-t-il un moyen efficace de faire ceci sans parser avec des boucles ?
étant donné qu'il faut une redirection par fichier de destination,
je dirais non.
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/08/2011, 09h19   #3
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
Si tu as des délimiteurs logiques ou un manière de déterminer par des critères la plage que tu veux "copier", tu peux faire cela avec gawk.

Code :
1
2
 
awk -f FichierCommandes $( cat ListeFichiers.txt ) > fichier_resultat.txt
becket est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/08/2011, 09h45   #4
Candidat au titre de Membre du Club
 
Inscription : septembre 2010
Messages : 11
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 11
Points : 14
Points : 14
Bonjour,

---------------
@N_Bah
Citation:
étant donné qu'il faut une redirection par fichier de destination,
je dirais non.
c'est bien le problème, si tu confirmes qu'il faut une redirection par fichier, alors je n'ai pas le choix. Merci

---------------
@becket
Citation:
Code :
awk -f FichierCommandes $( cat ListeFichiers.txt ) > fichier_resultat.txt
Sauf erreur de ma part, cette commande va générer un seul fichier de sortie (fichier_resultat.txt). Ce que je veux, c'est envoyer chaque ligne sélectionnée par grep vers un fichier (différent à chaque fois) spécifié par uttlist.

Merci à vous.
cobaltsixty est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/08/2011, 10h31   #5
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Code :
1
2
A=$(cat uttlist)
grep "sentence1" JuliusOutput |tee $A
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2011, 14h16   #6
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
Citation:
Envoyé par cobaltsixty Voir le message
Ce que je veux, c'est envoyer chaque ligne sélectionnée par grep vers un fichier (différent à chaque fois) spécifié par uttlist.
La première ligne correspondante à la recherche est envoyée vers le fichier dont le chemin et le nom se trouvent sur la première ligne du fichier uttlist

La seconde ligne correspondante à la recherche est envoyée vers le fichier dont le chemin et le nom se trouvent sur la seconde ligne du fichier uttlist

.. etc ?

Awk encore et toujours
becket est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/08/2011, 14h31   #7
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Citation:
Envoyé par becket Voir le message
La première ligne correspondante à la recherche est envoyée vers le fichier dont le chemin et le nom se trouvent sur la première ligne du fichier uttlist

La seconde ligne correspondante à la recherche est envoyée vers le fichier dont le chemin et le nom se trouvent sur la seconde ligne du fichier uttlist

.. etc ?
Hum... je ne l'ai pas compris comme ça môa

Citation:
Ce que je veux, c'est envoyer chaque ligne sélectionnée par grep vers un fichier (différent à chaque fois) spécifié par uttlist.
On ne peut pas prévoir à l'avance le nombre de lignes... enfin dans la plupart des cas entends-je


M'enfin, seul le principal intéressé pourras nous le confirmer...

__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 10h16   #8
Candidat au titre de Membre du Club
 
Inscription : septembre 2010
Messages : 11
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 11
Points : 14
Points : 14
Salut,

Citation:
Envoyé par zipe31 Voir le message
Salut,

Code :
1
2
A=$(cat uttlist)
grep "sentence1" JuliusOutput |tee $A
Merci pour la proposition mais c'est le premier truc que j'ai essayé (voir le début de mon post). ça recopie le même contenu (records correspondnant au "pattern") dans tous les fichiers et ce n'est pas ce que je veux malheureusement.

Bon allez, je continue à chercher...
Merci encore
cobaltsixty est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/08/2011, 10h20   #9
Candidat au titre de Membre du Club
 
Inscription : septembre 2010
Messages : 11
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 11
Points : 14
Points : 14
Citation:
Envoyé par becket Voir le message
Si tu as des délimiteurs logiques ou un manière de déterminer par des critères la plage que tu veux "copier", tu peux faire cela avec gawk.

Code :
1
2
 
awk -f FichierCommandes $( cat ListeFichiers.txt ) > fichier_resultat.txt
marche pas non plus ... snif

J'en ai marre, je vais faire une boucle.

Merci à tous le deux
cobaltsixty est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/08/2011, 10h41   #10
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 071
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 071
Points : 4 154
Points : 4 154
KISS, ok, mais 'faut quand même pas abuser
Code :
awk '/sentence1/{line=$0; getline file < "uttlist"; print line >file}' JuliusOutput
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 30
Vieux 29/08/2011, 10h46   #11
Candidat au titre de Membre du Club
 
Inscription : septembre 2010
Messages : 11
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 11
Points : 14
Points : 14

Un grand merci car ça fait exactement ce que je voulais.

Citation:
Envoyé par N_BaH Voir le message
KISS, ok, mais 'faut quand même pas abuser
Mais pour clarifier les choses, où est l'abus stp ?


Je manipule la ligne de commande depuis un peu plus de trois mois. Si ma question semble idiote, ainsi soit-il.
cobaltsixty est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/08/2011, 11h05   #12
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 071
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 071
Points : 4 154
Points : 4 154
l'abus est dans l'excès de simplicité
Keep It Simple Stupid
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 20
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h25.


 
 
 
 
Partenaires

Hébergement Web