Sujet : Re: formattage awk
De : nicolas$george (at) *nospam* salle-s.org (Nicolas George)
Groupes : fr.comp.os.unixOrganisation : Guest of ProXad - France
Date : 30. Mar 2020, 17:20:26
Message-ID : <5e820e39$0$16809$426a74cc@news.free.fr>References : 1 2 3 4User-Agent : Flrn (0.9.20070704)
Lulu , dans le message <
slrnr841ma.df2.lulu042@Minty.Rock-n-Roll.org>, a
écrit :
LC_NUMERIC=fr_FR.UTF-8 gawk -v k=$INTERFACE 'if ($1==k){printf "%'"'"'d\n", $10/1000}' /proc/net/dev
Que signifie la chaine "%'"'"'d" ?
Rien du tout.
Ce qui est très étonnant pour moi, c'est le nombre impair de « ' »
Et c'est très juste. C'est parce qu'ils ne vont pas ensemble.
Le début, « "% », fait partie du script gawk.
Le ' termine la chaîne qui a commencé à « 'if »
Le « "'" » est une chaîne qui contient uniquement une apostrophe.
Le ' commence une chaîne qui se terminera avant /proc/net/dev.
La fin, « d\n" », fait partie du script.
Il faut se rappeler que dans une chaîne entre ', seul ' est actif pour
marquer la fin de la chaîne, il n'y a pas d'échappement. Donc il est
impossible de faire figurer ' lui-même.
À la place, on assemble une chaîne entre ' puis une apostrophe seule
entre " puis une chaîne entre ' pour la fin du script. C'est pénible,
mais moins que de devoir penser à quoter tous caractères spéciaux pour
une chaîne en ".
Tout ceci se passe au niveau du shell. Ce que gawk voit, c'est :
« if ($1==k){printf "%'d\n", $10/1000} » (avec des guillemets français
pour délimiter).