Path: ...!2.eu.feeder.erje.net!feeder.erje.net!proxad.net!feeder1-2.proxad.net!cleanfeed1-a.proxad.net!nnrp1-2.free.fr!not-for-mail Newsgroups: fr.comp.os.unix From: Nicolas George Subject: Re: formattage awk Sender: george@phare.invalid (Nicolas George) X-Newsreader: Flrn (0.9.20070704) References: <87h7y74efj.fsf@izac.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=iso-8859-1 Date: 30 Mar 2020 15:20:26 GMT Lines: 34 Message-ID: <5e820e39$0$16809$426a74cc@news.free.fr> Organization: Guest of ProXad - France NNTP-Posting-Date: 30 Mar 2020 17:20:26 CEST NNTP-Posting-Host: 129.199.129.80 X-Trace: 1585581626 news-2.free.fr 16809 129.199.129.80:46604 X-Complaints-To: abuse@proxad.net Lulu , dans le message , 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).