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 :

Redirection a la fois vers stdout et vers un pipe


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2006
    Messages : 77
    Par défaut Redirection a la fois vers stdout et vers un pipe
    Bonjour,

    Je ne suis pas sûr que cela soit possible, j'aimerais que la sortie d'une commande soit a la fois rediriger vers stdout et vers une autre commande.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat toto.txt | sed 's/toto/tata/'
    je souhaite afficher sur stdout la sortie de la commande sed et en meme temps la recuperer via un pipe pour, par exemple faire un autre sed dessus et l'afficher ensuite sur stdout.

    Merci
    Yobbas

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    ta méthode est à proscrire

    cat fichier | action

    il faut faire commande "param d'action" fichier

    typiquement
    dans ton exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed "s/toto/tata/" toto.txt
    tant que tu forces pas sed à écrire le fichier toto.txt ça ne le modifie pas ! mais tu as l'affichage attendu !

    L'usage du pipe ou d'un fichier fifo ne se justifie que quand on traite une information et que c'est le résultat qu'on veut utiliser dans une autre commande par exemple dans le cas d'un backup déporté sur une machine distante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $ mysqldump -u root -p$passwd --all-databases | ssh -l operateur undertaker "gzip - > mysqldump.gz"
    $

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Par défaut
    Citation Envoyé par frp31 Voir le message
    ta méthode est à proscrire

    cat fichier | action

    il faut faire commande "param d'action" fichier
    Sauf si on veut faire partie du club très fermé des UUC

    Pour ta question, tu dois utiliser la commande tee:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    jeanluc@ibm:~$ cat > fichier
    Hello World!
    jeanluc@ibm:~$ sed 's/Hello/Bonjour/' fichier | tee /tmp/fichier.out
    Bonjour World!
    jeanluc@ibm:~$ cat /tmp/fichier.out 
    Bonjour World!

  4. #4
    Membre actif
    Avatar de debianhunter
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 63
    Par défaut
    Si la problematique est de faire deux traitements sed sur le meme stream, tu peux utiliser le parametre -e de sed pour enchainer les traitements:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e 's/ChaineAModifier1/modif/g' -e 's/ChaineAModifier2/modif2/g' -e '/ChaineAvantAjout/a LigneAAjouter' fichier
    va changer "ChaineAModifier1" en "modif", "ChaineAModifier2" en "modif2" et ajouter la ligne "LigneAAjouter" apres la/les ligne(s) contenant "ChaineAvantAjout", tout ca en une seule passe !

  5. #5
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    ou utilser (gnused) qui supporte le ;


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/t/a/g;s/y/z/g' fichier > resultat

Discussions similaires

  1. G95 - Redirection vers stdout original
    Par sebauvray dans le forum Fortran
    Réponses: 8
    Dernier message: 08/06/2011, 14h58
  2. Réponses: 3
    Dernier message: 21/12/2008, 20h03
  3. Réponses: 2
    Dernier message: 29/05/2007, 20h46
  4. Réponses: 2
    Dernier message: 09/05/2006, 15h52
  5. [XSLT] [Flux][Xalan] ResultSet vers stdout en passant par un XSLT
    Par B&B dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 02/08/2005, 09h22

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