Si un fichier log comprend à certains intervalles une ligne
avec un motif caractéristique, comme par exemple
-- MARK --
comme on peut trouver dans certains /var/log/messages,
ou tout autre repère temporel qu'on insèrerait avec cron + logger,
comment, avec des outils de base comme sed, awk, grep...
afficher ce qui figure entre la dernière ligne de ce type et la fin du
fichier ?
Encore mieux, comment afficher les n dernières "tranches" de ce log
délimitées par ces lignes ?
On 23 Aug 2005 16:04:43 GMT, David LE BOURGEOIS wrote:
Avec GNU tac (certains systemes ont "tail -r" qui fait l'equivalent)
tac < file | sed '/-- MARK --/q' | tac
Sur les systèmes où les outils GNU ne sont pas présents, j'ai l'habitude d'utiliser sed pour remplacer tac :
sed '1!G;h;$!d'
Tu as besoin du GNU sed pour ca ;). Car tout le fichier se retrouve en memoire et il n'y a guere que le GNU sed pour oublier de mettre une limitation ici.
Si l'on remplace chaque appel à tac par un appel à sed, on obtient 3 sed enchaînés par tubes :
sed '1!G;h;$!d' | sed '/--MARK--/q' | sed '1!G;h;$!d'
N'y aurait-il pas un moyen de factoriser tout ça, en un seul appel à sed ?
Si, une fois que tu as tout le fichier en memoire, tu peux faire un s/././
sed '1!G;h;$!d;s/.*(--MARK--)/1/'
Mais encore une fois, ca met tout le fichier en memoire et ne marchera pas avec tous les sed, a moins que le fichier soit tres petit.
Le problème de cette approche ne vient pas principalement de l'utilisation de la mémoire, mais de l'algorithme utilisé et de son impact sur la CPU. Meme avec gnu sed, ça ne tient pas la comparaison avec tac, qui va 13500 fois plus vite pour "retourner" un fichier de 5 mégas ...
$ wc bigfile 65579 131178 5823935 bigfile
$ /opt/csw/bin/gsed --version GNU sed version 4.1.4
$ time /opt/csw/bin/gsed '1!G;h;$!d' bigfile >/dev/null
real 42m48.16s user 41m18.22s sys 0m0.25s
$ time /opt/gnu/bin/tac bigfile >/dev/null
real 0m0.19s user 0m0.05s sys 0m0.05s
Stephane Chazelas wrote:
On 23 Aug 2005 16:04:43 GMT, David LE BOURGEOIS wrote:
Avec GNU tac (certains systemes ont "tail -r" qui fait
l'equivalent)
tac < file | sed '/-- MARK --/q' | tac
Sur les systèmes où les outils GNU ne sont pas présents, j'ai l'habitude
d'utiliser sed pour remplacer tac :
sed '1!G;h;$!d'
Tu as besoin du GNU sed pour ca ;). Car tout le fichier se
retrouve en memoire et il n'y a guere que le GNU sed pour
oublier de mettre une limitation ici.
Si l'on remplace chaque appel à tac par un appel à sed, on obtient 3 sed
enchaînés par tubes :
sed '1!G;h;$!d' | sed '/--MARK--/q' | sed '1!G;h;$!d'
N'y aurait-il pas un moyen de factoriser tout ça, en un seul appel à
sed ?
Si, une fois que tu as tout le fichier en memoire, tu peux faire
un s/././
sed '1!G;h;$!d;s/.*(--MARK--)/1/'
Mais encore une fois, ca met tout le fichier en memoire et ne
marchera pas avec tous les sed, a moins que le fichier soit
tres petit.
Le problème de cette approche ne vient pas principalement de
l'utilisation de la mémoire, mais de l'algorithme utilisé et
de son impact sur la CPU.
Meme avec gnu sed, ça ne tient pas la comparaison avec tac,
qui va 13500 fois plus vite pour "retourner" un fichier de
5 mégas ...
$ wc bigfile
65579 131178 5823935 bigfile
$ /opt/csw/bin/gsed --version
GNU sed version 4.1.4
$ time /opt/csw/bin/gsed '1!G;h;$!d' bigfile >/dev/null
On 23 Aug 2005 16:04:43 GMT, David LE BOURGEOIS wrote:
Avec GNU tac (certains systemes ont "tail -r" qui fait l'equivalent)
tac < file | sed '/-- MARK --/q' | tac
Sur les systèmes où les outils GNU ne sont pas présents, j'ai l'habitude d'utiliser sed pour remplacer tac :
sed '1!G;h;$!d'
Tu as besoin du GNU sed pour ca ;). Car tout le fichier se retrouve en memoire et il n'y a guere que le GNU sed pour oublier de mettre une limitation ici.
Si l'on remplace chaque appel à tac par un appel à sed, on obtient 3 sed enchaînés par tubes :
sed '1!G;h;$!d' | sed '/--MARK--/q' | sed '1!G;h;$!d'
N'y aurait-il pas un moyen de factoriser tout ça, en un seul appel à sed ?
Si, une fois que tu as tout le fichier en memoire, tu peux faire un s/././
sed '1!G;h;$!d;s/.*(--MARK--)/1/'
Mais encore une fois, ca met tout le fichier en memoire et ne marchera pas avec tous les sed, a moins que le fichier soit tres petit.
Le problème de cette approche ne vient pas principalement de l'utilisation de la mémoire, mais de l'algorithme utilisé et de son impact sur la CPU. Meme avec gnu sed, ça ne tient pas la comparaison avec tac, qui va 13500 fois plus vite pour "retourner" un fichier de 5 mégas ...
$ wc bigfile 65579 131178 5823935 bigfile
$ /opt/csw/bin/gsed --version GNU sed version 4.1.4
$ time /opt/csw/bin/gsed '1!G;h;$!d' bigfile >/dev/null
real 42m48.16s user 41m18.22s sys 0m0.25s
$ time /opt/gnu/bin/tac bigfile >/dev/null
real 0m0.19s user 0m0.05s sys 0m0.05s
Laurent Wacrenier
drkm écrit:
Laurent Wacrenier writes:
Il le lit qu'une fois, mais il le met deux fois en mémoire...
Quelle est la différence ?
Si le fichier est lu deux fois, il faudrait tenir compte du fait qu'il ai pu change et ça ne marche pas sur un pipe.
S'il est mis en mémoire, c'est un problème si le fichier est gros.
drkm <usenet@fgeorges.org> écrit:
Laurent Wacrenier writes:
Il le lit qu'une fois, mais il le met deux fois en mémoire...
Quelle est la différence ?
Si le fichier est lu deux fois, il faudrait tenir compte du fait qu'il
ai pu change et ça ne marche pas sur un pipe.
S'il est mis en mémoire, c'est un problème si le fichier est gros.
Il le lit qu'une fois, mais il le met deux fois en mémoire...
Quelle est la différence ?
Si le fichier est lu deux fois, il faudrait tenir compte du fait qu'il ai pu change et ça ne marche pas sur un pipe.
S'il est mis en mémoire, c'est un problème si le fichier est gros.
Stephane Chazelas
On Tue, 23 Aug 2005 13:43:17 +0000 (UTC), Laurent Wacrenier wrote:
Stephane Chazelas écrit:
Note que ca signifie lire le fichier en entier deux fois (tac | sed | tac dans mon exemple ne lit que la fin du fichier une fois mais n'est pas portable).
Il le lit qu'une fois, mais il le met deux fois en mémoire...
Le premier tac lit a l'envers en faisant des lseek, le deuxieme garde tout en memoire, c'est vrai mais ce n'est que la fin du fichier.
Il n'y a que la fin du fichier, jusqu'au dernier bloc contenant une marque qui est lue.
-- Stephane
On Tue, 23 Aug 2005 13:43:17 +0000 (UTC), Laurent Wacrenier wrote:
Note que ca signifie lire le fichier en entier deux fois (tac |
sed | tac dans mon exemple ne lit que la fin du fichier une
fois mais n'est pas portable).
Il le lit qu'une fois, mais il le met deux fois en mémoire...
Le premier tac lit a l'envers en faisant des lseek, le deuxieme
garde tout en memoire, c'est vrai mais ce n'est que la fin du
fichier.
Il n'y a que la fin du fichier, jusqu'au dernier bloc contenant
une marque qui est lue.
On Tue, 23 Aug 2005 13:43:17 +0000 (UTC), Laurent Wacrenier wrote:
Stephane Chazelas écrit:
Note que ca signifie lire le fichier en entier deux fois (tac | sed | tac dans mon exemple ne lit que la fin du fichier une fois mais n'est pas portable).
Il le lit qu'une fois, mais il le met deux fois en mémoire...
Le premier tac lit a l'envers en faisant des lseek, le deuxieme garde tout en memoire, c'est vrai mais ce n'est que la fin du fichier.
Il n'y a que la fin du fichier, jusqu'au dernier bloc contenant une marque qui est lue.
-- Stephane
Stephane Chazelas
On Wed, 24 Aug 2005 00:56:05 +0200, Jean-Louis Liagre wrote: [...]
Non, sous Solaris, nawk est different de /usr/xpg4/bin/awk meme si /usr/xpg4/bin/awk est plus proche de nawk que de /usr/bin/awk.
man nawk:
DESCRIPTION The /usr/bin/nawk and /usr/xpg4/bin/awk utilities execute programs written in the nawk programming language, which is specialized for textual data manipulation.
nawk n'est pas POSIX conformant (du moins, moins que /usr/xpg4/bin/awk) et la commande n'existe pas forcement sur tous les Unix vu qu'elle n'est pas standardisee.
$ echo a | nawk '/[[:print:]]/' $ echo a | /usr/xpg4/bin/awk '/[[:print:]]/' a $ ls -l =nawk /usr/xpg4/bin/awk -r-xr-xr-x 1 bin bin 121952 Feb 16 2002 /usr/bin/nawk -r-xr-xr-x 1 bin bin 72112 Sep 1 1998 /usr/xpg4/bin/awk
[...]
Et ni /usr/xpg4/bin/awk ni nawk ne supportent "--" sous Solaris.
1) je n'utilise "--" dans mon script qu'avec sed et grep, et je viens de retirer celui que vous aviez mis au grep, qui ne passe pas, sous Solaris du moins.
Ah oui, au temps pour moi.
2) Faux, /usr/xpg4/bin/awk et nawk supportent "--" sous Solaris, d'ailleurs "--" est POSIX. awk (oawk) ne le supporte pas.
Depend de la version de Solaris alors. Aucun ne le supporte avec Solaris 7.
$ cat a.awk { print $0 print a } $ date | awk -f a.awk -- a" Wed Aug 24 00:45:40 CEST 2005
$ date | awk -f a.awk a" Wed Aug 24 00:46:03 CEST 2005 22 $ date | nawk -f a.awk -- a" Wed Aug 24 00:46:11 CEST 2005 22 $ date | /usr/xpg4/bin/awk -f a.awk -- a" Wed Aug 24 00:46:26 CEST 2005 22
$ date | nawk 1 -- a" nawk: can't open file -- source line number 1 $ date | /usr/xpg4/bin/awk 1 -- a"; echo input file "--"
De plus, probleme si les noms de fichiers contiennent des "=", mieux vaut laisser le shell ouvrir le fichier (l'alternative est de remplacer les fichiers "fooºr" par "./fooºr").
Je ne vois pas en quoi des fichiers dont les noms contiennent des "=" perturbent mon script.
Effectivement, j'avais pris $LOGFILE pour un argument de awk.
-- Stephane
On Wed, 24 Aug 2005 00:56:05 +0200, Jean-Louis Liagre wrote:
[...]
Non, sous Solaris, nawk est different de /usr/xpg4/bin/awk meme
si /usr/xpg4/bin/awk est plus proche de nawk que de
/usr/bin/awk.
man nawk:
DESCRIPTION
The /usr/bin/nawk and /usr/xpg4/bin/awk utilities execute
programs written in the nawk programming language, which is
specialized for textual data manipulation.
nawk n'est pas POSIX conformant (du moins, moins
que /usr/xpg4/bin/awk) et la commande n'existe pas forcement sur
tous les Unix vu qu'elle n'est pas standardisee.
$ echo a | nawk '/[[:print:]]/'
$ echo a | /usr/xpg4/bin/awk '/[[:print:]]/'
a
$ ls -l =nawk /usr/xpg4/bin/awk
-r-xr-xr-x 1 bin bin 121952 Feb 16 2002 /usr/bin/nawk
-r-xr-xr-x 1 bin bin 72112 Sep 1 1998 /usr/xpg4/bin/awk
[...]
Et ni /usr/xpg4/bin/awk ni nawk ne supportent "--" sous Solaris.
1) je n'utilise "--" dans mon script qu'avec sed et grep,
et je viens de retirer celui que vous aviez mis au grep, qui ne
passe pas, sous Solaris du moins.
Ah oui, au temps pour moi.
2) Faux, /usr/xpg4/bin/awk et nawk supportent "--" sous Solaris,
d'ailleurs "--" est POSIX. awk (oawk) ne le supporte pas.
Depend de la version de Solaris alors. Aucun ne le supporte avec
Solaris 7.
$ cat a.awk
{
print $0
print a
}
$ date | awk -f a.awk -- a"
Wed Aug 24 00:45:40 CEST 2005
$ date | awk -f a.awk a"
Wed Aug 24 00:46:03 CEST 2005
22
$ date | nawk -f a.awk -- a"
Wed Aug 24 00:46:11 CEST 2005
22
$ date | /usr/xpg4/bin/awk -f a.awk -- a"
Wed Aug 24 00:46:26 CEST 2005
22
$ date | nawk 1 -- a"
nawk: can't open file --
source line number 1
$ date | /usr/xpg4/bin/awk 1 -- a"; echo
input file "--"
De plus, probleme si les noms de fichiers contiennent des "=",
mieux vaut laisser le shell ouvrir le fichier (l'alternative est
de remplacer les fichiers "fooºr" par "./fooºr").
Je ne vois pas en quoi des fichiers dont les noms contiennent
des "=" perturbent mon script.
Effectivement, j'avais pris $LOGFILE pour un argument de awk.
On Wed, 24 Aug 2005 00:56:05 +0200, Jean-Louis Liagre wrote: [...]
Non, sous Solaris, nawk est different de /usr/xpg4/bin/awk meme si /usr/xpg4/bin/awk est plus proche de nawk que de /usr/bin/awk.
man nawk:
DESCRIPTION The /usr/bin/nawk and /usr/xpg4/bin/awk utilities execute programs written in the nawk programming language, which is specialized for textual data manipulation.
nawk n'est pas POSIX conformant (du moins, moins que /usr/xpg4/bin/awk) et la commande n'existe pas forcement sur tous les Unix vu qu'elle n'est pas standardisee.
$ echo a | nawk '/[[:print:]]/' $ echo a | /usr/xpg4/bin/awk '/[[:print:]]/' a $ ls -l =nawk /usr/xpg4/bin/awk -r-xr-xr-x 1 bin bin 121952 Feb 16 2002 /usr/bin/nawk -r-xr-xr-x 1 bin bin 72112 Sep 1 1998 /usr/xpg4/bin/awk
[...]
Et ni /usr/xpg4/bin/awk ni nawk ne supportent "--" sous Solaris.
1) je n'utilise "--" dans mon script qu'avec sed et grep, et je viens de retirer celui que vous aviez mis au grep, qui ne passe pas, sous Solaris du moins.
Ah oui, au temps pour moi.
2) Faux, /usr/xpg4/bin/awk et nawk supportent "--" sous Solaris, d'ailleurs "--" est POSIX. awk (oawk) ne le supporte pas.
Depend de la version de Solaris alors. Aucun ne le supporte avec Solaris 7.
$ cat a.awk { print $0 print a } $ date | awk -f a.awk -- a" Wed Aug 24 00:45:40 CEST 2005
$ date | awk -f a.awk a" Wed Aug 24 00:46:03 CEST 2005 22 $ date | nawk -f a.awk -- a" Wed Aug 24 00:46:11 CEST 2005 22 $ date | /usr/xpg4/bin/awk -f a.awk -- a" Wed Aug 24 00:46:26 CEST 2005 22
$ date | nawk 1 -- a" nawk: can't open file -- source line number 1 $ date | /usr/xpg4/bin/awk 1 -- a"; echo input file "--"
De plus, probleme si les noms de fichiers contiennent des "=", mieux vaut laisser le shell ouvrir le fichier (l'alternative est de remplacer les fichiers "fooºr" par "./fooºr").
Je ne vois pas en quoi des fichiers dont les noms contiennent des "=" perturbent mon script.
Effectivement, j'avais pris $LOGFILE pour un argument de awk.
-- Stephane
Jean-Louis Liagre
Stephane Chazelas wrote:
On Wed, 24 Aug 2005 00:56:05 +0200, Jean-Louis Liagre wrote: [...]
Non, sous Solaris, nawk est different de /usr/xpg4/bin/awk meme si /usr/xpg4/bin/awk est plus proche de nawk que de /usr/bin/awk.
man nawk:
DESCRIPTION The /usr/bin/nawk and /usr/xpg4/bin/awk utilities execute programs written in the nawk programming language, which is specialized for textual data manipulation.
nawk n'est pas POSIX conformant (du moins, moins que /usr/xpg4/bin/awk) et la commande n'existe pas forcement sur tous les Unix vu qu'elle n'est pas standardisee.
$ echo a | nawk '/[[:print:]]/' $ echo a | /usr/xpg4/bin/awk '/[[:print:]]/' a $ ls -l =nawk /usr/xpg4/bin/awk -r-xr-xr-x 1 bin bin 121952 Feb 16 2002 /usr/bin/nawk -r-xr-xr-x 1 bin bin 72112 Sep 1 1998 /usr/xpg4/bin/awk
[...]
Je ne conteste bien sûr pas que nawk et xpg4/awk sont deux programmes différents, je dis juste qu'ils sont tous les deux des implémentations de nawk, et pas de awk.
Que xpg4/awk respecte (mieux) POSIX, c'est bien naturel.
Et ni /usr/xpg4/bin/awk ni nawk ne supportent "--" sous Solaris.
1) je n'utilise "--" dans mon script qu'avec sed et grep, et je viens de retirer celui que vous aviez mis au grep, qui ne passe pas, sous Solaris du moins.
Ah oui, au temps pour moi.
2) Faux, /usr/xpg4/bin/awk et nawk supportent "--" sous Solaris, d'ailleurs "--" est POSIX. awk (oawk) ne le supporte pas.
Depend de la version de Solaris alors. Aucun ne le supporte avec Solaris 7.
Solaris 7 est EOL depuis deux ans, et en support limité depuis 9 jours. J'espère que vous ne basez pas votre connaissance de Solaris sur cette version. Si oui, il est temps de migrer !
$ cat a.awk { print $0 print a } $ date | awk -f a.awk -- a" Wed Aug 24 00:45:40 CEST 2005
$ date | awk -f a.awk a" Wed Aug 24 00:46:03 CEST 2005 22 $ date | nawk -f a.awk -- a" Wed Aug 24 00:46:11 CEST 2005 22 $ date | /usr/xpg4/bin/awk -f a.awk -- a" Wed Aug 24 00:46:26 CEST 2005 22
$ date | nawk 1 -- a" nawk: can't open file -- source line number 1 $ date | /usr/xpg4/bin/awk 1 -- a"; echo input file "--"
Effectivement, nawk ne semble comprendre le "--" que s'il y a eu des options avant.
Stephane Chazelas wrote:
On Wed, 24 Aug 2005 00:56:05 +0200, Jean-Louis Liagre wrote:
[...]
Non, sous Solaris, nawk est different de /usr/xpg4/bin/awk meme
si /usr/xpg4/bin/awk est plus proche de nawk que de
/usr/bin/awk.
man nawk:
DESCRIPTION
The /usr/bin/nawk and /usr/xpg4/bin/awk utilities execute
programs written in the nawk programming language, which is
specialized for textual data manipulation.
nawk n'est pas POSIX conformant (du moins, moins
que /usr/xpg4/bin/awk) et la commande n'existe pas forcement sur
tous les Unix vu qu'elle n'est pas standardisee.
$ echo a | nawk '/[[:print:]]/'
$ echo a | /usr/xpg4/bin/awk '/[[:print:]]/'
a
$ ls -l =nawk /usr/xpg4/bin/awk
-r-xr-xr-x 1 bin bin 121952 Feb 16 2002 /usr/bin/nawk
-r-xr-xr-x 1 bin bin 72112 Sep 1 1998 /usr/xpg4/bin/awk
[...]
Je ne conteste bien sûr pas que nawk et xpg4/awk sont deux
programmes différents, je dis juste qu'ils sont tous les deux
des implémentations de nawk, et pas de awk.
Que xpg4/awk respecte (mieux) POSIX, c'est bien naturel.
Et ni /usr/xpg4/bin/awk ni nawk ne supportent "--" sous Solaris.
1) je n'utilise "--" dans mon script qu'avec sed et grep,
et je viens de retirer celui que vous aviez mis au grep, qui ne
passe pas, sous Solaris du moins.
Ah oui, au temps pour moi.
2) Faux, /usr/xpg4/bin/awk et nawk supportent "--" sous Solaris,
d'ailleurs "--" est POSIX. awk (oawk) ne le supporte pas.
Depend de la version de Solaris alors. Aucun ne le supporte avec
Solaris 7.
Solaris 7 est EOL depuis deux ans, et en support limité depuis 9
jours. J'espère que vous ne basez pas votre connaissance de Solaris
sur cette version. Si oui, il est temps de migrer !
$ cat a.awk
{
print $0
print a
}
$ date | awk -f a.awk -- a"
Wed Aug 24 00:45:40 CEST 2005
$ date | awk -f a.awk a"
Wed Aug 24 00:46:03 CEST 2005
22
$ date | nawk -f a.awk -- a"
Wed Aug 24 00:46:11 CEST 2005
22
$ date | /usr/xpg4/bin/awk -f a.awk -- a"
Wed Aug 24 00:46:26 CEST 2005
22
$ date | nawk 1 -- a"
nawk: can't open file --
source line number 1
$ date | /usr/xpg4/bin/awk 1 -- a"; echo
input file "--"
Effectivement, nawk ne semble comprendre le
"--" que s'il y a eu des options avant.
On Wed, 24 Aug 2005 00:56:05 +0200, Jean-Louis Liagre wrote: [...]
Non, sous Solaris, nawk est different de /usr/xpg4/bin/awk meme si /usr/xpg4/bin/awk est plus proche de nawk que de /usr/bin/awk.
man nawk:
DESCRIPTION The /usr/bin/nawk and /usr/xpg4/bin/awk utilities execute programs written in the nawk programming language, which is specialized for textual data manipulation.
nawk n'est pas POSIX conformant (du moins, moins que /usr/xpg4/bin/awk) et la commande n'existe pas forcement sur tous les Unix vu qu'elle n'est pas standardisee.
$ echo a | nawk '/[[:print:]]/' $ echo a | /usr/xpg4/bin/awk '/[[:print:]]/' a $ ls -l =nawk /usr/xpg4/bin/awk -r-xr-xr-x 1 bin bin 121952 Feb 16 2002 /usr/bin/nawk -r-xr-xr-x 1 bin bin 72112 Sep 1 1998 /usr/xpg4/bin/awk
[...]
Je ne conteste bien sûr pas que nawk et xpg4/awk sont deux programmes différents, je dis juste qu'ils sont tous les deux des implémentations de nawk, et pas de awk.
Que xpg4/awk respecte (mieux) POSIX, c'est bien naturel.
Et ni /usr/xpg4/bin/awk ni nawk ne supportent "--" sous Solaris.
1) je n'utilise "--" dans mon script qu'avec sed et grep, et je viens de retirer celui que vous aviez mis au grep, qui ne passe pas, sous Solaris du moins.
Ah oui, au temps pour moi.
2) Faux, /usr/xpg4/bin/awk et nawk supportent "--" sous Solaris, d'ailleurs "--" est POSIX. awk (oawk) ne le supporte pas.
Depend de la version de Solaris alors. Aucun ne le supporte avec Solaris 7.
Solaris 7 est EOL depuis deux ans, et en support limité depuis 9 jours. J'espère que vous ne basez pas votre connaissance de Solaris sur cette version. Si oui, il est temps de migrer !
$ cat a.awk { print $0 print a } $ date | awk -f a.awk -- a" Wed Aug 24 00:45:40 CEST 2005
$ date | awk -f a.awk a" Wed Aug 24 00:46:03 CEST 2005 22 $ date | nawk -f a.awk -- a" Wed Aug 24 00:46:11 CEST 2005 22 $ date | /usr/xpg4/bin/awk -f a.awk -- a" Wed Aug 24 00:46:26 CEST 2005 22
$ date | nawk 1 -- a" nawk: can't open file -- source line number 1 $ date | /usr/xpg4/bin/awk 1 -- a"; echo input file "--"
Effectivement, nawk ne semble comprendre le "--" que s'il y a eu des options avant.
drkm
Laurent Wacrenier <lwa@ teaser . fr> writes:
drkm écrit:
Laurent Wacrenier writes:
Il le lit qu'une fois, mais il le met deux fois en mémoire...
Quelle est la différence ?
Si le fichier est lu deux fois, il faudrait tenir compte du fait qu'il ai pu change
Ah oui, je n'avais pas songé à cela. Merci.
--drkm
Laurent Wacrenier <lwa@ teaser . fr> writes:
drkm <usenet@fgeorges.org> écrit:
Laurent Wacrenier writes:
Il le lit qu'une fois, mais il le met deux fois en mémoire...
Quelle est la différence ?
Si le fichier est lu deux fois, il faudrait tenir compte du fait qu'il
ai pu change
Il le lit qu'une fois, mais il le met deux fois en mémoire...
Quelle est la différence ?
Si le fichier est lu deux fois, il faudrait tenir compte du fait qu'il ai pu change
Ah oui, je n'avais pas songé à cela. Merci.
--drkm
Stephane Chazelas
On Wed, 24 Aug 2005 12:36:39 +0200, Jean-Louis Liagre wrote: [...]
Je ne conteste bien sûr pas que nawk et xpg4/awk sont deux programmes différents, je dis juste qu'ils sont tous les deux des implémentations de nawk, et pas de awk.
le standard POSIX est basé sur le /nouveau/ awk de 1988, le nawk de Solaris aussi. le /usr/bin/awk est basé sur le vieux awk.
Que xpg4/awk respecte (mieux) POSIX, c'est bien naturel.
Ca en fait quand meme une commande differente avec un language different et des fonctionnalités differentes, quoi qu'en dise la page de man. J'ai donné pour exemple les "POSIX character classes".
[...]
Depend de la version de Solaris alors. Aucun ne le supporte avec Solaris 7.
Solaris 7 est EOL depuis deux ans, et en support limité depuis 9 jours. J'espère que vous ne basez pas votre connaissance de Solaris sur cette version. Si oui, il est temps de migrer !
Ca reste la version de Solaris la plus repandue, du moins sur les machines de production. Du moins, c'etait le cas l'annee derniere.
[...]
$ date | nawk 1 -- a" nawk: can't open file -- source line number 1 $ date | /usr/xpg4/bin/awk 1 -- a"; echo input file "--"
Effectivement, nawk ne semble comprendre le "--" que s'il y a eu des options avant.
Oui, ce qui est normal en fait. Ce qui est apres le script est censé etre geré par le script. Je m'embrouille tout seul.
-- Stephane
On Wed, 24 Aug 2005 12:36:39 +0200, Jean-Louis Liagre wrote:
[...]
Je ne conteste bien sûr pas que nawk et xpg4/awk sont deux
programmes différents, je dis juste qu'ils sont tous les deux
des implémentations de nawk, et pas de awk.
le standard POSIX est basé sur le /nouveau/ awk de 1988, le nawk
de Solaris aussi. le /usr/bin/awk est basé sur le vieux awk.
Que xpg4/awk respecte (mieux) POSIX, c'est bien naturel.
Ca en fait quand meme une commande differente avec un language
different et des fonctionnalités differentes, quoi qu'en dise la
page de man. J'ai donné pour exemple les "POSIX character
classes".
[...]
Depend de la version de Solaris alors. Aucun ne le supporte avec
Solaris 7.
Solaris 7 est EOL depuis deux ans, et en support limité depuis 9
jours. J'espère que vous ne basez pas votre connaissance de Solaris
sur cette version. Si oui, il est temps de migrer !
Ca reste la version de Solaris la plus repandue, du moins sur
les machines de production. Du moins, c'etait le cas l'annee
derniere.
[...]
$ date | nawk 1 -- a"
nawk: can't open file --
source line number 1
$ date | /usr/xpg4/bin/awk 1 -- a"; echo
input file "--"
Effectivement, nawk ne semble comprendre le
"--" que s'il y a eu des options avant.
Oui, ce qui est normal en fait. Ce qui est apres le script est
censé etre geré par le script. Je m'embrouille tout seul.
On Wed, 24 Aug 2005 12:36:39 +0200, Jean-Louis Liagre wrote: [...]
Je ne conteste bien sûr pas que nawk et xpg4/awk sont deux programmes différents, je dis juste qu'ils sont tous les deux des implémentations de nawk, et pas de awk.
le standard POSIX est basé sur le /nouveau/ awk de 1988, le nawk de Solaris aussi. le /usr/bin/awk est basé sur le vieux awk.
Que xpg4/awk respecte (mieux) POSIX, c'est bien naturel.
Ca en fait quand meme une commande differente avec un language different et des fonctionnalités differentes, quoi qu'en dise la page de man. J'ai donné pour exemple les "POSIX character classes".
[...]
Depend de la version de Solaris alors. Aucun ne le supporte avec Solaris 7.
Solaris 7 est EOL depuis deux ans, et en support limité depuis 9 jours. J'espère que vous ne basez pas votre connaissance de Solaris sur cette version. Si oui, il est temps de migrer !
Ca reste la version de Solaris la plus repandue, du moins sur les machines de production. Du moins, c'etait le cas l'annee derniere.
[...]
$ date | nawk 1 -- a" nawk: can't open file -- source line number 1 $ date | /usr/xpg4/bin/awk 1 -- a"; echo input file "--"
Effectivement, nawk ne semble comprendre le "--" que s'il y a eu des options avant.
Oui, ce qui est normal en fait. Ce qui est apres le script est censé etre geré par le script. Je m'embrouille tout seul.
-- Stephane
Jean-Louis Liagre
Stephane Chazelas wrote:
On Wed, 24 Aug 2005 12:36:39 +0200, Jean-Louis Liagre wrote: [...]
Je ne conteste bien sûr pas que nawk et xpg4/awk sont deux programmes différents, je dis juste qu'ils sont tous les deux des implémentations de nawk, et pas de awk.
le standard POSIX est basé sur le /nouveau/ awk de 1988, le nawk de Solaris aussi. le /usr/bin/awk est basé sur le vieux awk.
Que xpg4/awk respecte (mieux) POSIX, c'est bien naturel.
Ca en fait quand meme une commande differente avec un language different et des fonctionnalités differentes, quoi qu'en dise la page de man. J'ai donné pour exemple les "POSIX character classes".
Vous exagérez, il s'agit du *même* langage, avec des variantes mineures. Il me semble que ce genre de sutuation s'observe sur la plupart des implémentations de langages de programmation, sauf peut-être Perl, je ne sais pas, je n'y connais rien en Perl ... ;-)
[...]
Depend de la version de Solaris alors. Aucun ne le supporte avec Solaris 7.
Solaris 7 est EOL depuis deux ans, et en support limité depuis 9 jours. J'espère que vous ne basez pas votre connaissance de Solaris sur cette version. Si oui, il est temps de migrer !
Ca reste la version de Solaris la plus repandue, du moins sur les machines de production. Du moins, c'etait le cas l'annee derniere.
Je ne met pas cela en doute pour les environnements que vous connaissez, mais plus généralement, Solaris 7 n'a jamais été la version la plus répandue, ça a été la 2.5.1, la 2.6 et aujourd'hui le parc en prod est le plus souvent en Solaris 8.
Beaucoup passeront directement de la 8 vers la 10.
[...]
Stephane Chazelas wrote:
On Wed, 24 Aug 2005 12:36:39 +0200, Jean-Louis Liagre wrote:
[...]
Je ne conteste bien sûr pas que nawk et xpg4/awk sont deux
programmes différents, je dis juste qu'ils sont tous les deux
des implémentations de nawk, et pas de awk.
le standard POSIX est basé sur le /nouveau/ awk de 1988, le nawk
de Solaris aussi. le /usr/bin/awk est basé sur le vieux awk.
Que xpg4/awk respecte (mieux) POSIX, c'est bien naturel.
Ca en fait quand meme une commande differente avec un language
different et des fonctionnalités differentes, quoi qu'en dise la
page de man. J'ai donné pour exemple les "POSIX character
classes".
Vous exagérez, il s'agit du *même* langage, avec des variantes
mineures.
Il me semble que ce genre de sutuation s'observe sur la plupart
des implémentations de langages de programmation, sauf peut-être
Perl, je ne sais pas, je n'y connais rien en Perl ... ;-)
[...]
Depend de la version de Solaris alors. Aucun ne le supporte avec
Solaris 7.
Solaris 7 est EOL depuis deux ans, et en support limité depuis 9
jours. J'espère que vous ne basez pas votre connaissance de Solaris
sur cette version. Si oui, il est temps de migrer !
Ca reste la version de Solaris la plus repandue, du moins sur
les machines de production. Du moins, c'etait le cas l'annee
derniere.
Je ne met pas cela en doute pour les environnements que vous
connaissez, mais plus généralement, Solaris 7 n'a jamais été
la version la plus répandue, ça a été la 2.5.1, la 2.6 et
aujourd'hui le parc en prod est le plus souvent en Solaris 8.
Beaucoup passeront directement de la 8 vers la 10.
On Wed, 24 Aug 2005 12:36:39 +0200, Jean-Louis Liagre wrote: [...]
Je ne conteste bien sûr pas que nawk et xpg4/awk sont deux programmes différents, je dis juste qu'ils sont tous les deux des implémentations de nawk, et pas de awk.
le standard POSIX est basé sur le /nouveau/ awk de 1988, le nawk de Solaris aussi. le /usr/bin/awk est basé sur le vieux awk.
Que xpg4/awk respecte (mieux) POSIX, c'est bien naturel.
Ca en fait quand meme une commande differente avec un language different et des fonctionnalités differentes, quoi qu'en dise la page de man. J'ai donné pour exemple les "POSIX character classes".
Vous exagérez, il s'agit du *même* langage, avec des variantes mineures. Il me semble que ce genre de sutuation s'observe sur la plupart des implémentations de langages de programmation, sauf peut-être Perl, je ne sais pas, je n'y connais rien en Perl ... ;-)
[...]
Depend de la version de Solaris alors. Aucun ne le supporte avec Solaris 7.
Solaris 7 est EOL depuis deux ans, et en support limité depuis 9 jours. J'espère que vous ne basez pas votre connaissance de Solaris sur cette version. Si oui, il est temps de migrer !
Ca reste la version de Solaris la plus repandue, du moins sur les machines de production. Du moins, c'etait le cas l'annee derniere.
Je ne met pas cela en doute pour les environnements que vous connaissez, mais plus généralement, Solaris 7 n'a jamais été la version la plus répandue, ça a été la 2.5.1, la 2.6 et aujourd'hui le parc en prod est le plus souvent en Solaris 8.
Beaucoup passeront directement de la 8 vers la 10.