Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/07/2012, à 14:45

Ypnose

[amixer]Obtenir status / infos avec commande[RÉSOLU]

Salut,
J'essaie d'extraire des infos de la commande 'amixer get Master | tail -1', j'obtiens:

  Mono: Playback 64 [100%] [0.00dB] [on]

Avec la commande "amixer get Master | tail -1 | sed 's/.*\[\([0-9]*%\)\].*/\1/'", j'obtiens sur la valeur 100.

Je voudrais obtenir avec la commande 'amixer get Master | tail -1', la valeur du niveau (ici 100) et si le canal est mute ou pas (ici on). Cependant, je n'y arrive pas.
J'ai un peu essayé avec sed et awk (print$) mais je ne suis pas assez bon pour obtenir ces deux infos.
J'ai besoin de votre aide.
Merci.

Dernière modification par Ypnose (Le 20/07/2012, à 11:29)

#2 Le 18/07/2012, à 18:13

nesthib

Re : [amixer]Obtenir status / infos avec commande[RÉSOLU]

essaie :

amixer get Master | sed -n '$s/.*\[\([0-9]\+\)%\].*\[\(on\|off*\).*/Le canal est \2 à \1%/p'

attention, ça ne fonctionnera que si les deux paramètres sont présents (pour certains mixers le on/off est absent).

sinon, avec awk :

amixer get Master | awk -F"[][ ]+" 'END {print "Le canal est "$7" à "$5}'

(tu peux supprimer facilement le %)
Même remarque, si le nombre de champs est variable il faudra trouver une solution un peu plus robuste wink


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#3 Le 18/07/2012, à 19:12

Ypnose

Re : [amixer]Obtenir status / infos avec commande[RÉSOLU]

Merci à toi. Tu es doué.
On s'approche beaucoup de ce que je souhaite.
Je pourrais lire le man (un peu la flemme), pourrais-tu m'expliquer un peu les commandes?

Et pour finir j'aimerais obtenir un résultat sous la forme:

Volume = 100% | Canal [ON]

J'ai modifié la première commande comme ça:

amixer get Master | sed -n '$s/.*\[\([0-9]\+\)%\].*\[\(on\|off*\).*/\1% | Canal \2/p' | tr 'a-z' 'A-Z'

Cependant je trouve ça pas super clean car tr change toutes les lettres et pas uniquement ON/OFF (ce que je veux). Une idée l'ami?

#4 Le 18/07/2012, à 19:31

Ypnose

Re : [amixer]Obtenir status / infos avec commande[RÉSOLU]

Ne t'embêtes pas! Finalement je suis passé par deux commandes distinctes:

VOL=$(amixer get Master | tail -1 | awk {'print $4'})
CAN=$(amixer get Master | tail -1 | awk {'print $6'} | tr 'a-z' 'A-Z')

#5 Le 18/07/2012, à 20:13

nesthib

Re : [amixer]Obtenir status / infos avec commande[RÉSOLU]

le tail -1 est inutile, il suffit de dire à awk de ne travailler que sur la dernière ligne :

amixer … | awk 'END {…}'

sinon pour avoir le retour que tu souhaites en une seule commande :

amixer get Master | awk -F"[][ ]+" 'END {print "Volume = "$5" | Canal ["toupper($7)"]"}'

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#6 Le 18/07/2012, à 21:42

Ypnose

Re : [amixer]Obtenir status / infos avec commande[RÉSOLU]

Tu m'a appris quelque chose. La seconde commande est costaude.
Sinon, super option pour awk, je ne connaissais pas. Et je préfère passer par deux commandes, c'est plus pratique.

VOL=$(amixer get Master | awk 'END {print $4}')
CAN=$(amixer get Master | awk 'END {print $6}' | tr 'a-z' 'A-Z')

#7 Le 19/07/2012, à 01:37

nesthib

Re : [amixer]Obtenir status / infos avec commande[RÉSOLU]

pas de soucis

mais tu peux quand même faire :

CAN=$(amixer get Master | awk 'END {print toupper($6)}')

tu économises un pipe et un processus smile


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#8 Le 19/07/2012, à 11:33

Ypnose

Re : [amixer]Obtenir status / infos avec commande[RÉSOLU]

Je connaissais pas toupper. Je viens de jeter un coup d'œil au man. C'est pas mal du tout, cette commande.
Merci beaucoup à toi! smile

#9 Le 20/07/2012, à 08:00

nesthib

Re : [amixer]Obtenir status / infos avec commande[RÉSOLU]

et sinon, un p'tit [résolu] ? wink


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne