|
|
|
|
||||||
| fr.comp.os.unix Système UNIX. |
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
[suivi sur fr.comp.os.unix]
Le Vendredi 07 avril 2006 à 20:21 UTC, franconews écrivait sur fr.usenet.distribution : > c'est quoi déjà la commande qui permet de compter les lignes ? wc -l fichier ou pour faire plus propre cat fichier | wc -l mais sed -n '$=' fichier fonctionne bien aussi. @+ -- Gérald Niel <news:lj0d12dt9nii0bu96j5qo06q3a2sb82sbu@neottia.n et> |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Le 07 avr, à 20:35, Gérald Niel papotait :
> wc -l fichier > > ou pour faire plus propre > > cat fichier | wc -l Mieux vaut lire ça que d'être aveugle. -- No fortunes found |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
On Fri, 07 Apr 2006 20:35:49 +0000, Gérald Niel wrote:
>> c'est quoi déjà la commande qui permet de compter les lignes ? > wc -l fichier > ou pour faire plus propre > cat fichier | wc -l Faudra que tu argumentes un peu, là. -- Debian/apt Repo: http://locataire-serveur.info/sectio...ian-repository Fedora/yum Repo: http://locataire-serveur.info/sectio...edora-core-yum |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Le Fri, 7 Apr 2006 20:35:49 +0000 (UTC), Gérald Niel écrivit:
> > c'est quoi déjà la commande qui permet de compter les lignes ? > wc -l fichier > ou pour faire plus propre > cat fichier | wc -l Ah ben non, c'est moins propre: UUOC. > mais sed -n '$=' fichier fonctionne bien aussi. Si on part dans les 42000 possibilités pour compter les lignes d'un fichier, on est mal barrés. Arnaud. -- Perso: http://launay.org/blog/ Hébergement: http://www.nocworld.com/ |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Le Vendredi 07 avril 2006 à 22:37 UTC, R12y écrivait sur
fr.comp.os.unix : >> ou pour faire plus propre >> cat fichier | wc -l > > Faudra que tu argumentes un peu, là. C'est juste pour ne pas lire le nom du fichier. C'est en ce sens le mot "propre". @+ -- Gérald Niel <news:lj0d12dt9nii0bu96j5qo06q3a2sb82sbu@neottia.n et> |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
Gérald Niel <gniel@alussinan.org> wrote:
> >> cat fichier | wc -l > > > > Faudra que tu argumentes un peu, là. > > C'est juste pour ne pas lire le nom du fichier. C'est en ce sens le > mot "propre". wc -l < fichier Ca le fait aussi et ca evite d'avoir à lancer un processus de plus. -- Emmanuel Dreyfus http://hcpnet.free.fr/pubz manu@netbsd.org |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
Arnaud Launay a utilisé son clavier pour écrire :
> Le Fri, 7 Apr 2006 20:35:49 +0000 (UTC), Gérald Niel écrivit: >>> c'est quoi déjà la commande qui permet de compter les lignes ? >> wc -l fichier >> ou pour faire plus propre >> cat fichier | wc -l > > Ah ben non, c'est moins propre: UUOC. > >> mais sed -n '$=' fichier fonctionne bien aussi. > > Si on part dans les 42000 possibilités pour compter les lignes > d'un fichier, on est mal barrés. > > Arnaud. allez on y va ! :-D grep -n "" fichier | tail -1 | cut -f1 -d':' |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
Emmanuel Dreyfus wrote in message
<1hdgwtu.1bpedahke9ay8N%manu@netbsd.org>: > wc -l < fichier > Ca le fait aussi et ca evite d'avoir à lancer un processus de plus. D'un autre côté, c'est un peu dommage que la redirection en entrée se fasse par la droite, ça ne représente pas bien le sens de circulation des données. Une notation du style < fichier | wc -l serait plus logique. Hélas, les shells ne l'interprétent pas comme une simple redirection. |
|
|
|
#9 |
|
Messages: n/a
Hébergeur: |
Nicolas George <nicolas$george@salle-s.org> wrote:
> D'un autre côté, c'est un peu dommage que la redirection en entrée se fasse > par la droite, ça ne représente pas bien le sens de circulation des données. Si tu vas pas là, cat ne laisse pas presupposer que ca va lire un fichier, et wc ne semble pas à premiere vue être un outil pour compter les lignes... -- Emmanuel Dreyfus Un bouquin en français sur BSD: http://www.eyrolles.com/Informatique.../livre-bsd.php manu@netbsd.org |
|
|
|
#10 |
|
Messages: n/a
Hébergeur: |
Nicolas George wrote:
> Emmanuel Dreyfus wrote in message > <1hdgwtu.1bpedahke9ay8N%manu@netbsd.org>: >> wc -l < fichier >> Ca le fait aussi et ca evite d'avoir à lancer un processus de plus. > > D'un autre côté, c'est un peu dommage que la redirection en entrée se fasse > par la droite, ça ne représente pas bien le sens de circulation des données. > Une notation du style > > < fichier | wc -l > > serait plus logique. Hélas, les shells ne l'interprétent pas comme une > simple redirection. Il ne s'agit pas d'une redirection, mais d'un pipe qui implique deux commandes. Pas sûr que ce soit plus lisible, mais ksh et bash acceptent cette syntaxe: <fichier wc -l |
|
|
|
#11 |
|
Messages: n/a
Hébergeur: |
JustMe <pasdespam@merci.beaucoup.con> wrote:
> > Si on part dans les 42000 possibilités pour compter les lignes > > d'un fichier, on est mal barrés. > allez on y va ! > grep -n "" fichier | tail -1 | cut -f1 -d':' A moi! Ou même ca, d'ailleurs: awk '{x++} END{print x}' fichier Ou ca, qui est plus rapide: awk 'END{print FNR}' fichier Ou encore ca, pour les amateurs de trucs imbitables: sed -n '$=' fichier Sinon, j'ai ca aussi qui est un peu pervers: tr '\n' '.' < fichier | wc -c -- Emmanuel Dreyfus Le cahier de l'admin BSD 2eme ed. est dans toutes les bonnes librairies http://www.eyrolles.com/Informatique.../livre-bsd.php manu@netbsd.org |
|
|
|
#12 |
|
Messages: n/a
Hébergeur: |
Le Samedi 08 avril 2006 à 16:37 UTC, Emmanuel Dreyfus écrivait sur
fr.comp.os.unix : > et wc ne semble pas à premiere vue être un outil pour compter > les lignes... Mmmmm... $ man wc WC(1) BSD General Commands Manual WC(1) NAME wc -- word, line, character, and byte count SYNOPSIS wc [-clmw] [file ...] DESCRIPTION The wc utility displays the number of lines, words, and bytes contained in each input file (or standard input, by default) to the standard output. [...] -l The number of lines in each input file is written to the standard output. @+ -- Gérald Niel <news:lj0d12dt9nii0bu96j5qo06q3a2sb82sbu@neottia.n et> |
|
|
|
#13 |
|
Messages: n/a
Hébergeur: |
Le Samedi 08 avril 2006 à 21:26 UTC, Emmanuel Dreyfus écrivait sur
fr.comp.os.unix : > Ou encore ca, pour les amateurs de trucs imbitables: > sed -n '$=' fichier Perdu, je l'ai déjà donné. @+ -- Gérald Niel <news:lj0d12dt9nii0bu96j5qo06q3a2sb82sbu@neottia.n et> |
|
|
|
#14 |
|
Messages: n/a
Hébergeur: |
Gérald Niel <gniel@alussinan.org> wrote:
> > et wc ne semble pas à premiere vue être un outil pour compter > > les lignes... > > $ man wc (snip) > wc -- word, line, character, and byte count Ah evidemment, si tu lis le manuel, tu le sais. Mais si tu lis la doc tu sais aussi ce que wc -l < fichier fait. -- Emmanuel Dreyfus http://hcpnet.free.fr/pubz manu@netbsd.org |
|
|
|
#15 |
|
Messages: n/a
Hébergeur: |
Arnaud Launay wrote:
> Le Fri, 7 Apr 2006 20:35:49 +0000 (UTC), Gérald Niel écrivit: >>> c'est quoi déjà la commande qui permet de compter les lignes ? >> wc -l fichier >> ou pour faire plus propre >> cat fichier | wc -l > > Ah ben non, c'est moins propre: UUOC. > >> mais sed -n '$=' fichier fonctionne bien aussi. > > Si on part dans les 42000 possibilités pour compter les lignes > d'un fichier, on est mal barrés. > > Arnaud. (echo 0; sed 's/.*/1+/' fichier; echo p) | dc |
|
|
|
#16 |
|
Messages: n/a
Hébergeur: |
Le 09-04-2006, Jean-Louis Liagre a écrit:
> Arnaud Launay wrote: [...] >> Si on part dans les 42000 possibilités pour compter les lignes >> d'un fichier, on est mal barrés. >> >> Arnaud. > > (echo 0; sed 's/.*/1+/' fichier; echo p) | dc Sed peut faire echo, sed '1i\ 0 s/.*/1+/ $a\ p ' fichier | dc mais aussi compter tout seul à l'ancienne sed -n ' s/.*// H $!b x s/\n\{1000\}/M/g s/\n\{500\}/D/ s/\n\{100\}/C/g s/\n\{50\}/L/ s/\n\{10\}/X/g s/\n\{5\}/V/ s/\n/I/g p ' fichier -- Jacques L'helgoualc'h |
|
|
|
#17 |
|
Messages: n/a
Hébergeur: |
Bonjour,
le 08/04/2006 à 09:31, JustMe a écrit dans le message <mn.423b7d6459e9e81d.51095@merci.beaucoup.con> : > grep -n "" fichier | tail -1 | cut -f1 -d':' Ou pourquoi faire simple quand on peut faire compliqué. ![]() grep -c '' fichier -- Benoit Izac |
|
|
|
#18 |
|
Messages: n/a
Hébergeur: |
Emmanuel Dreyfus wrote in message
<1hdiui5.1c3rpxy1oybat1N%manu@netbsd.org>: > Ah evidemment, si tu lis le manuel, tu le sais. Mais si tu lis la doc tu > sais aussi ce que wc -l < fichier fait. Je ne soulevais pas une question de savoir ou pas ce que ça fait. Merci, ça va, je sais ce que fait une redirection. Je soulevais une question de logique dans l'ordre des éléments de la ligne de commande. |
|
|
|
#19 |
|
Messages: n/a
Hébergeur: |
Nicolas George <nicolas$george@salle-s.org> wrote:
> > Ah evidemment, si tu lis le manuel, tu le sais. Mais si tu lis la doc tu > > sais aussi ce que wc -l < fichier fait. > Je ne soulevais pas une question de savoir ou pas ce que ça fait. Merci, ça > va, je sais ce que fait une redirection. Je soulevais une question de > logique dans l'ordre des éléments de la ligne de commande. Le but de ma contribution était de souligner le caractère très relatif de l'intuitivité de la ligne de commande. Ca demande de toute façon un certain aprentissage, au cours duquel on aura l'occasion de surmonter l'illogisme de certaines constructions. Comme de toute façon personne ne songe serieusement à modifier la syntaxe du Bourne shell, il n'y a pas tellement d'autre approche possible. -- Emmanuel Dreyfus http://hcpnet.free.fr/pubz manu@netbsd.org |
|
|
|
#20 |
|
Messages: n/a
Hébergeur: |
Jacques L'helgoualc'h <lhh+no_spam@free.fr> wrote:
> sed -n ' > s/.*// > H > $!b > x > s/\n\{1000\}/M/g > s/\n\{500\}/D/ > s/\n\{100\}/C/g > s/\n\{50\}/L/ > s/\n\{10\}/X/g > s/\n\{5\}/V/ > s/\n/I/g > p > ' fichier Est-ce qu'on n'arriverait pas à reconvertir en chiffres arabes avec une passe de plus? Un truc comme: s/.\{9}\/9/g; s/.\{8}\/8/g; ... -- Emmanuel Dreyfus http://hcpnet.free.fr/pubz manu@netbsd.org |
|
|
|
#21 |
|
Messages: n/a
Hébergeur: |
Emmanuel Dreyfus wrote in message
<1hdj5rl.1bx9rdr166nfvmN%manu@netbsd.org>: > Le but de ma contribution était de souligner le caractère très relatif > de l'intuitivité de la ligne de commande. Je n'ai pas *non plus* parlé d'intuitivité. > Comme de toute façon personne ne > songe serieusement à modifier la syntaxe du Bourne shell Ah? Il me semblait que c'était pourtant ce que les auteurs de zsh, bash et bien d'autres passaient leur temps à faire. |
|
|
|
#22 |
|
Messages: n/a
Hébergeur: |
Le 09-04-2006, Emmanuel Dreyfus a écrit:
> Jacques L'helgoualc'h <lhh+no_spam@free.fr> wrote: > >> sed -n ' >> s/.*// >> H >> $!b >> x >> s/\n\{1000\}/M/g >> s/\n\{500\}/D/ >> s/\n\{100\}/C/g >> s/\n\{50\}/L/ >> s/\n\{10\}/X/g >> s/\n\{5\}/V/ >> s/\n/I/g >> p >> ' fichier > > Est-ce qu'on n'arriverait pas à reconvertir en chiffres arabes avec une > passe de plus? Un truc comme: > s/.\{9}\/9/g; s/.\{8}\/8/g; ... Bien sûr, mais «sed -n '$='» le fait déjà directement... Il y a aussi la calculatrice Sed sur http://sed.sf.net/ pour remplacer dc. J'ai précisé «à l'ancienne» par flemme d'écrire les s/VIIII/IX/ s/IIII/IV/ et autres abréviations moyenâgeuses ; quant aux barres au-dessus des lettres pour dépasser correctement MMMMDCCCCLXXXXVIIII, heu, c'est laissé en exercice. -- Jacques L'helgoualc'h |
|
|
|
#23 |
|
Messages: n/a
Hébergeur: |
Nicolas George <nicolas$george@salle-s.org> wrote:
> > Comme de toute façon personne ne > > songe serieusement à modifier la syntaxe du Bourne shell > > Ah ? Il me semblait que c'était pourtant ce que les auteurs de zsh, bash et > bien d'autres passaient leur temps à faire. Et ils créent et modifient zsh, bash et autres, mais pas le Bourne shell, qui est le seul dénominateur commun censé marcher pareil partout. C'est d'ailleurs lui qui est standardisé par POSIX.2a et SUSv2: http://www.opengroup.org/onlinepubs/...99/xcu/sh.html Changer la syntaxe de /bin/sh signifie rompre la compatibilité ascendante avec tout un tas de scripts, à commencer par les scripts configure. Un projet comme bash, qui vise à remplacer le bourne shell, implémente la syntaxe standardisée *plus* des extensions, pour que bash invoqué par un lien dur sur /bin/sh se comporte comme un Bourne shell standard. Bon, ensuite on peut ouvrir un débat de généalogiste pour dire que le shell standardisé POSIX.2a et SUSv2 n'est pas le Bourne shell, puisque le vrai Bourne shell serait uniquement l'implémentation originale de AT&T, mais sans moi. -- Emmanuel Dreyfus http://hcpnet.free.fr/pubz manu@netbsd.org |
|
|
|
#24 |
|
Messages: n/a
Hébergeur: |
Nicolas George wrote:
> Emmanuel Dreyfus wrote in message > <1hdj5rl.1bx9rdr166nfvmN%manu@netbsd.org>: >> Le but de ma contribution était de souligner le caractère très relatif >> de l'intuitivité de la ligne de commande. > > Je n'ai pas *non plus* parlé d'intuitivité. > >> Comme de toute façon personne ne >> songe serieusement à modifier la syntaxe du Bourne shell > > Ah ? Il me semblait que c'était pourtant ce que les auteurs de zsh, bash et > bien d'autres passaient leur temps à faire. Il ne me semble pas qu'il soit nécessaire de changer quoi que se soit à la syntaxe shell pour répondre au besoin, vu que cette syntaxe, à ma connaissance, n'impose pas d'emplacement particulier ou d'ordre aux redirections. Il est donc tout à fait possible d'écrire: wc -l <fichier # syntaxe habituelle ou <fichier wc -l # syntaxe plus logique pour toi voire même wc <fichier -l # syntaxe troublante, mais aussi acceptée pas sh, ksh, zsh, bash, ... |
|
|
|
#25 |
|
Messages: n/a
Hébergeur: |
Jacques L'helgoualc'h wrote:
> Le 09-04-2006, Jean-Louis Liagre a écrit : >> Arnaud Launay wrote: > [...] >>> Si on part dans les 42000 possibilités pour compter les lignes >>> d'un fichier, on est mal barrés. >>> >>> Arnaud. >> (echo 0; sed 's/.*/1+/' fichier; echo p) | dc > > Sed peut faire echo, > > sed '1i\ > 0 > s/.*/1+/ > $a\ > p > ' fichier | dc Ok. > mais aussi compter tout seul à l'ancienne > > sed -n ' > s/.*// > H > $!b > x > s/\n\{1000\}/M/g > s/\n\{500\}/D/ > s/\n\{100\}/C/g > s/\n\{50\}/L/ > s/\n\{10\}/X/g > s/\n\{5\}/V/ > s/\n/I/g > p > ' fichier Celui-là ne passe pas avec un sed posix: sed: command garbled: s/\n\{1000\}/M/g |
|
![]() |
| Outils de la discussion | |
|
|