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 :

[awk] Insérer un espace de fin


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut [awk] Insérer un espace de fin
    Bonjour,

    Ce script permet d'afficher les propriétés d'une fenêtre dans une console:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #!/bin/sh
     
    echo "Click on a window to get his properties."
     
    xprop | awk ' \
        /^WM_CLASS/{sub(/.* =/, "\ninstance:"); sub(/,/, "\nclass:"); print} \
        /^WM_NAME/{sub(/.* =/, "title:"); print}'
     
    echo -n "Press Window+Shift+c to quit... "
    lors de l'exécution, j'obtiens l'affichage suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Click on a window to get his properties:
     
    instance: "urxvt"
    class: "URxvt"
    title: "xprop"
    Press Window+Shift+c to quit...
    Cependant, je ne parviens pas à insérer un espace entre 'title' et 'Press Window...' dans le 'awk'

    Un petite idée ? Merci.

  2. #2
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    Citation Envoyé par Olivier Regnier Voir le message
    je ne parviens pas à insérer un espace entre 'title' et 'Press Window...'
    je suis pas certain de bien comprendre, tu veux d'une ligne vide entre la ligne "title: ..." et la ligne "Press Window..." ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    xprop | awk ' \
        /^WM_CLASS/{sub(/.* =/, "\ninstance:"); sub(/,/, "\nclass:"); print} \
        /^WM_NAME/{sub(/.* =/, "title:"); print}'
    echo
    echo -n "Press Window+Shift+c to quit... "

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 673
    Par défaut
    Bonjour,

    un pas vers un script 100% awk :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    xprop | awk 'END{ print "\nPress Window+Shift+c to quit... " }; BEGIN{ print "Click on a window to get his properties."} \
        /^WM_CLASS/{sub(/.* =/, "\ninstance:"); sub(/,/, "\nclass:"); print} \
        /^WM_NAME/{sub(/.* =/, "title:"); print}'
    et un script "full-awk" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    awk 'BEGIN{
       print "Click on a window to get his properties."
       cmd="xprop"; while ((cmd | getline) >0){ \
           if(/^WM_CLASS/){sub(/.* =/, "\ninstance:"); sub(/,/, "\nclass:"); print} \
           if (/^WM_NAME/){sub(/.* =/, "title:"); print}
       }
       print "\nPress Window+Shift+c to quit... "
       close(cmd)
    }'
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Quitte à utiliser awk, autant prendre le = comme séparateur de champs, ce qui évite deux substitutions.

  5. #5
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    awk 'BEGIN{
    print "Click on a window to get his properties."
    cmd="xprop"; while ((cmd | getline >0)){ \
        if (/^WM_CLASS/){sub(/.* =/, "\ninstance:"); sub(/,/, "\nclass:"); print} \
        if (/^WM_NAME/){sub(/.* =/, "title:"); print}
    }
    print "\nPress Window+Shift+c to quit... "
    close(cmd)
    }'


    Merci beacoup

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 673
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ((cmd | getline >0))
    j'ai un doute sur la position de la première parenthèse fermante
    ...
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

Discussions similaires

  1. Comment insérer un espace à la fin d'un mot en javascript ?
    Par hellspawn_ludo dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 25/02/2008, 12h11
  2. Réponses: 2
    Dernier message: 17/04/2007, 09h49
  3. Supprimer les espaces en fin de chaine.
    Par KneXtasY dans le forum C
    Réponses: 5
    Dernier message: 26/12/2005, 10h33
  4. Comment insérer un espace dans un champ
    Par davyd dans le forum Langage SQL
    Réponses: 4
    Dernier message: 22/03/2005, 10h00
  5. Réponses: 17
    Dernier message: 18/03/2005, 09h23

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