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 :

Comment modifier le résultat d'une commande ?


Sujet :

Shell et commandes GNU

  1. #1
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut Comment modifier le résultat d'une commande ?
    Bonjour,

    Voici le lien de la discussion que je viens d'ouvrir dans le forum PostgreSQL qui explique mon souci :
    https://www.developpez.net/forums/d2.../#post11663618

    Dans un script bash, avec la commande psql -U postgres -w -c "SELECT datname FROM pg_database;" 2> /dev/null je demande la liste des BDD PsotgreSQL à sauvegarder et ça donne le résultat suivant qui est ensuite exploité par la suite du script :
    datname
    -----------
    postgres
    template1
    template0
    test
    icescrum
    (5 lignes)
    Une solution à mon problème serait de modifier le résultat pour éliminer les lignes "datname", "-----------" et "(5 lignes)".
    Est-ce possible ? Si oui comment, sachant que "(5 lignes)" deviendra un jour "(6 lignes)", puis 7, 8... ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 377
    Points
    19 377
    Par défaut
    Bonjour,

    je crois que mysql permet via quelque option de ne pas afficher les indications dont tu veux te débarrasser. ce serait plus propre.
    regarde le man de postgresql.

    sinon on peut "nettoyer" la sortie avec sed :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    psql ... | sed '1,2d;$d'
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    As-tu vérifié que le fichier que tu obtenais par redirection de la sortie contenait effectivement ce que tu cites ? Parce que ce genre de commande renvoie une version pour les humains, et une autre version pour les scripts. Je doute que les choses que tu veux supprimer soit dans la version pour les robots.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    As-tu vérifié que le fichier que tu obtenais par redirection de la sortie contenait effectivement ce que tu cites ? Parce que ce genre de commande renvoie une version pour les humains, et une autre version pour les scripts. Je doute que les choses que tu veux supprimer soit dans la version pour les robots.
    Oui j'en suis sûr parce que le log donne des erreurs sur la dernière ligne de résultat (les deux premières, je les ignore). Voir mon message dans la discussion du forum PostgreSQL pour plus d'explications.

    Citation Envoyé par N_BaH
    sinon on peut "nettoyer" la sortie avec sed :
    Je ne connaissais pas (je suis une bille en script shell ) ; j'essaierai.
    Puis-je avoir une explication détaillée de la commande que tu donnes ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 377
    Points
    19 377
    Par défaut
    ça supprime les deux premières lignes (1,2), et la dernière ($).

    mais, après STFW (5 secondes !), il y aurait une option -t (--tuples-only), qui permet de n'afficher que les données...
    quand on dit de regarder le man,
    il faut RTFM, ou STFW.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    On m'a effectivement donné l'option -t qui m'avait échappé lors de ma lecture de la doc sur psql (parce oui, j'avais cherché là quand j'ai fait mon script) dans l'autre discussion.

    J'essaie ça et je verrai le log demain.

    Du coup je clos ici. J'aurai appris un truc avec sed qui resservira peut-être. Merci.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. bash: comment mettre le résultat d'une commande dans une variable
    Par helpcomm dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 03/10/2012, 23h26
  2. comment modifier le texte dans une commande document.write
    Par riquet90 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/03/2010, 08h48
  3. Réponses: 1
    Dernier message: 18/02/2010, 18h09
  4. [Batch] Comment passer le résultat d'une commande en variable
    Par Ohemeg dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 30/11/2009, 23h51
  5. Comment recevoir en directe le résultat d'une commande systeme en C++/C?
    Par Elv13 dans le forum Administration système
    Réponses: 17
    Dernier message: 02/06/2008, 16h16

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