Re: [ssfr] Pb avec awk (completement debutant)

[ Thread Index | Date Index | More debianworld.org/shellscript-fr Archives ]


Daniel Caillibaud a écrit :
> giggzounet a écrit :
>> Bonjour,
>>
>> Je ne connais à awk...et j'essaye de l'utiliser...bref ça ne marche
>> pas :)
> 
> http://cli.asyd.net/home/filtres/awk/presentation
> 
>> Mon but est de configurer "awesome". Pour celà j'essaye de faire
>> apparaitre un petit widget qui indique le volume du PCM. J'utilise donc
>> amixer pour ça :
>>
>> 12:39 giggz@thor ~ % amixer get PCM
>> Simple mixer control 'PCM',0
>>   Capabilities: pvolume pswitch pswitch-joined
>>   Playback channels: Front Left - Front Right
>>   Limits: Playback 0 - 31
>>   Mono:
>>   Front Left: Playback 11 [35%] [-18.00dB] [on]
>>   Front Right: Playback 11 [35%] [-18.00dB] [on]
>>
>> Le but est de récupérer le 35. Donc le fichier dont je m'inspire le gars
>> met ça :
>> amixer get PCM | awk \'{ field = $NF }; END{sub(/%/," "); print
>> substr($5,2,3)}\'
>>
>> Moi qd je colle ça dans mon terminal (le shell est zsh) j'ai ça :
>> 12:39 giggz@thor ~ % amixer get PCM | awk \'{ field = $NF };
>> END{sub(/%/," "); print substr($5,2,3)}\'
>> zsh: parse error near `}'
>>
>>
>> Si qqn pouvait m'aider...
> 
> Il ne faut pas echapper les ' de l'expression awk
> 
> echo 'Simple mixer control 'PCM',0
>   Capabilities: pvolume pswitch pswitch-joined
>   Playback channels: Front Left - Front Right
>   Limits: Playback 0 - 31
>   Mono:
>   Front Left: Playback 11 [35%] [-18.00dB] [on]
>   Front Right: Playback 11 [35%] [-18.00dB] [on]'|awk '{ field = $NF
> };END{sub(/%/," "); print substr($5,2,3)}'
> 35
> 
> Sinon, y'a ça qui marche aussi dans ce cas
> 
> echo 'Simple mixer control 'PCM',0
>   Capabilities: pvolume pswitch pswitch-joined
>   Playback channels: Front Left - Front Right
>   Limits: Playback 0 - 31
>   Mono:
>   Front Left: Playback 11 [35%] [-18.00dB] [on]
>   Front Right: Playback 11 [35%] [-18.00dB] [on]'| awk -F [ '/Front
> Left:/ {print  substr($2,1,2)}'
> 35
> 
> le -F [, c'est pour spécifier [ comme séparateur de champ
> /Front Left:/ => pour la ligne qui contient ça, on fait substr($2,1,2),
> soit afficher deux caractères du 2e champ, en commençant au 2e caractère
> (indice 1), dans ton exemple le 2e champ contient "35%] " (sans les
> guillemets).
> Pour les autres lignes on ne fait rien...
> 

Ok merci! bon j'ai fait aussi avec cut et grep.

Merci
Guillaume



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/