Bonjour,
Sur une machine Linux j'ai un fichier de logs qui n'a pas de champ fixe
et dont le séparateur de champs est : '
Ce caractère peut malheureusement se retrouver dans le texte brut de ce
log.
Le dernier champs du fichier est le champ de taille des fichiers,
j'aimerais extraire les chiffres de la taille (uniquement les chiffres)
afin de pouvoir les additionner.
La taille est toujours entourés des mots size et bytes.
J'ai essayé avec awk mais quand un caractère ' est présent dans la ligne
ça me fausse tout.
Exemple de ligne
[02:38:31 AM 10/01/2003] Message 'T6501eb8e0dc0a801014f0' from
'clgjaifaejb@yahoo.com' to 'YYY@XXX.com' entitled 'p Porn Movie Heaven:
Sylvia Swallows Rocco's Load!' classification 'In SPAM' size 5739 bytes.
Voilà, en espérant avoir été clair
Merci d'avance de votre réponse
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Etienne PIERRE
On mer, 12 nov 2003, Gérard Aubry wrote:
Le dernier champs du fichier est le champ de taille des fichiers, j'aimerais extraire les chiffres de la taille (uniquement les chiffres) afin de pouvoir les additionner. La taille est toujours entourés des mots size et bytes. J'ai essayé avec awk mais quand un caractère ' est présent dans la ligne ça me fausse tout.
Exemple de ligne [02:38:31 AM 10/01/2003] Message 'T6501eb8e0dc0a801014f0' from '' to '' entitled 'p Porn Movie Heaven: Sylvia Swallows Rocco's Load!' classification 'In SPAM' size 5739 bytes.
Je pense qu'un petit
sed -ne 's/.*size ([0-9][0-9]*)bytes$/1/p' fichier.log
devrait faire l'affaire.
Etienne
-- Etienne PIERRE "etienne.pierre" arobase "tuxfamily.org"
On mer, 12 nov 2003, Gérard Aubry wrote:
Le dernier champs du fichier est le champ de taille des fichiers,
j'aimerais extraire les chiffres de la taille (uniquement les chiffres)
afin de pouvoir les additionner.
La taille est toujours entourés des mots size et bytes.
J'ai essayé avec awk mais quand un caractère ' est présent dans la ligne
ça me fausse tout.
Exemple de ligne
[02:38:31 AM 10/01/2003] Message 'T6501eb8e0dc0a801014f0' from
'clgjaifaejb@yahoo.com' to 'YYY@XXX.com' entitled 'p Porn Movie Heaven:
Sylvia Swallows Rocco's Load!' classification 'In SPAM' size 5739 bytes.
Je pense qu'un petit
sed -ne 's/.*size ([0-9][0-9]*)bytes$/1/p' fichier.log
devrait faire l'affaire.
Etienne
--
Etienne PIERRE "etienne.pierre" arobase "tuxfamily.org"
Le dernier champs du fichier est le champ de taille des fichiers, j'aimerais extraire les chiffres de la taille (uniquement les chiffres) afin de pouvoir les additionner. La taille est toujours entourés des mots size et bytes. J'ai essayé avec awk mais quand un caractère ' est présent dans la ligne ça me fausse tout.
Exemple de ligne [02:38:31 AM 10/01/2003] Message 'T6501eb8e0dc0a801014f0' from '' to '' entitled 'p Porn Movie Heaven: Sylvia Swallows Rocco's Load!' classification 'In SPAM' size 5739 bytes.
Je pense qu'un petit
sed -ne 's/.*size ([0-9][0-9]*)bytes$/1/p' fichier.log
devrait faire l'affaire.
Etienne
-- Etienne PIERRE "etienne.pierre" arobase "tuxfamily.org"
Stephane Chazelas
2003/11/12, 15:33(+01), Gérard Aubry: [...]
La taille est toujours entourés des mots size et bytes. J'ai essayé avec awk mais quand un caractère ' est présent dans la ligne ça me fausse tout.
Exemple de ligne [02:38:31 AM 10/01/2003] Message 'T6501eb8e0dc0a801014f0' from '' to '' entitled 'p Porn Movie Heaven: Sylvia Swallows Rocco's Load!' classification 'In SPAM' size 5739 bytes. [...]
Si tu veux juste faire une somme de tous les "bytes", tu n'as pas besoin de spécifier « ' » comme séparateur de champs.
Meme si tu spécifies « ' » comme séparateur de champs, tu peux toujours accéder à " size 5739 bytes" par $NF. Tu peux utiliser split() ensuite pour en extraire le nombre de bytes.
La taille est toujours entourés des mots size et bytes.
J'ai essayé avec awk mais quand un caractère ' est présent dans la ligne
ça me fausse tout.
Exemple de ligne
[02:38:31 AM 10/01/2003] Message 'T6501eb8e0dc0a801014f0' from
'clgjaifaejb@yahoo.com' to 'YYY@XXX.com' entitled 'p Porn Movie Heaven:
Sylvia Swallows Rocco's Load!' classification 'In SPAM' size 5739 bytes.
[...]
Si tu veux juste faire une somme de tous les "bytes", tu n'as
pas besoin de spécifier « ' » comme séparateur de champs.
Meme si tu spécifies « ' » comme séparateur de champs, tu peux
toujours accéder à " size 5739 bytes" par $NF. Tu peux utiliser
split() ensuite pour en extraire le nombre de bytes.
La taille est toujours entourés des mots size et bytes. J'ai essayé avec awk mais quand un caractère ' est présent dans la ligne ça me fausse tout.
Exemple de ligne [02:38:31 AM 10/01/2003] Message 'T6501eb8e0dc0a801014f0' from '' to '' entitled 'p Porn Movie Heaven: Sylvia Swallows Rocco's Load!' classification 'In SPAM' size 5739 bytes. [...]
Si tu veux juste faire une somme de tous les "bytes", tu n'as pas besoin de spécifier « ' » comme séparateur de champs.
Meme si tu spécifies « ' » comme séparateur de champs, tu peux toujours accéder à " size 5739 bytes" par $NF. Tu peux utiliser split() ensuite pour en extraire le nombre de bytes.
Merci de votre aide, les commandes que vous me proposé n'on pas d'erreur de syntaxe mais je ne récupère rien à l'écran de même si je redirige le résultat dans un fichier.
Bonjour, Sur une machine Linux j'ai un fichier de logs qui n'a pas de champ fixe et dont le séparateur de champs est : ' Ce caractère peut malheureusement se retrouver dans le texte brut de ce log. Le dernier champs du fichier est le champ de taille des fichiers, j'aimerais extraire les chiffres de la taille (uniquement les chiffres) afin de pouvoir les additionner. La taille est toujours entourés des mots size et bytes. J'ai essayé avec awk mais quand un caractère ' est présent dans la ligne ça me fausse tout.
Exemple de ligne [02:38:31 AM 10/01/2003] Message 'T6501eb8e0dc0a801014f0' from '' to '' entitled 'p Porn Movie Heaven: Sylvia Swallows Rocco's Load!' classification 'In SPAM' size 5739 bytes.
Voilà, en espérant avoir été clair Merci d'avance de votre réponse
Merci de votre aide,
les commandes que vous me proposé n'on pas d'erreur de syntaxe mais je ne
récupère rien à l'écran de même si je redirige le résultat dans un fichier.
Bonjour,
Sur une machine Linux j'ai un fichier de logs qui n'a pas de champ fixe
et dont le séparateur de champs est : '
Ce caractère peut malheureusement se retrouver dans le texte brut de ce
log.
Le dernier champs du fichier est le champ de taille des fichiers,
j'aimerais extraire les chiffres de la taille (uniquement les chiffres)
afin de pouvoir les additionner.
La taille est toujours entourés des mots size et bytes.
J'ai essayé avec awk mais quand un caractère ' est présent dans la ligne
ça me fausse tout.
Exemple de ligne
[02:38:31 AM 10/01/2003] Message 'T6501eb8e0dc0a801014f0' from
'clgjaifaejb@yahoo.com' to 'YYY@XXX.com' entitled 'p Porn Movie Heaven:
Sylvia Swallows Rocco's Load!' classification 'In SPAM' size 5739 bytes.
Voilà, en espérant avoir été clair
Merci d'avance de votre réponse
Merci de votre aide, les commandes que vous me proposé n'on pas d'erreur de syntaxe mais je ne récupère rien à l'écran de même si je redirige le résultat dans un fichier.
Bonjour, Sur une machine Linux j'ai un fichier de logs qui n'a pas de champ fixe et dont le séparateur de champs est : ' Ce caractère peut malheureusement se retrouver dans le texte brut de ce log. Le dernier champs du fichier est le champ de taille des fichiers, j'aimerais extraire les chiffres de la taille (uniquement les chiffres) afin de pouvoir les additionner. La taille est toujours entourés des mots size et bytes. J'ai essayé avec awk mais quand un caractère ' est présent dans la ligne ça me fausse tout.
Exemple de ligne [02:38:31 AM 10/01/2003] Message 'T6501eb8e0dc0a801014f0' from '' to '' entitled 'p Porn Movie Heaven: Sylvia Swallows Rocco's Load!' classification 'In SPAM' size 5739 bytes.
Voilà, en espérant avoir été clair Merci d'avance de votre réponse
Etienne PIERRE
On mer, 12 nov 2003, Etienne PIERRE wrote:
sed -ne 's/.*size ([0-9][0-9]*)bytes$/1/p' fichier.log avec un espace en plus :
sed -ne 's/.*size ([0-9][0-9]*) bytes$/1/p' fichier.log
chez moi ça marche :
$ echo "[02:38:31 AM 10/01/2003] Message 'T6501eb8e0dc0a801014f0' from '' to '' entitled 'p Porn Movie Heaven: Sylvia Swallows Rocco's Load!' classification 'In SPAM' size 5739 bytes" | sed -ne 's/.*size ([0-9][0-9]*) bytes/1/p' 5739
Etienne
-- Etienne PIERRE "etienne.pierre" arobase "tuxfamily.org"
On mer, 12 nov 2003, Etienne PIERRE wrote:
sed -ne 's/.*size ([0-9][0-9]*)bytes$/1/p' fichier.log
avec un espace en plus :
sed -ne 's/.*size ([0-9][0-9]*) bytes$/1/p' fichier.log
chez moi ça marche :
$ echo "[02:38:31 AM 10/01/2003] Message 'T6501eb8e0dc0a801014f0' from
'clgjaifaejb@yahoo.com' to 'YYY@XXX.com' entitled 'p Porn Movie Heaven:
Sylvia Swallows Rocco's Load!' classification 'In SPAM' size 5739
bytes" | sed -ne 's/.*size ([0-9][0-9]*) bytes/1/p'
5739
Etienne
--
Etienne PIERRE "etienne.pierre" arobase "tuxfamily.org"
sed -ne 's/.*size ([0-9][0-9]*)bytes$/1/p' fichier.log avec un espace en plus :
sed -ne 's/.*size ([0-9][0-9]*) bytes$/1/p' fichier.log
chez moi ça marche :
$ echo "[02:38:31 AM 10/01/2003] Message 'T6501eb8e0dc0a801014f0' from '' to '' entitled 'p Porn Movie Heaven: Sylvia Swallows Rocco's Load!' classification 'In SPAM' size 5739 bytes" | sed -ne 's/.*size ([0-9][0-9]*) bytes/1/p' 5739
Etienne
-- Etienne PIERRE "etienne.pierre" arobase "tuxfamily.org"
Stephane Chazelas
2003/11/12, 16:16(+01), Gérard Aubry:
les commandes que vous me proposé n'on pas d'erreur de syntaxe mais je ne récupère rien à l'écran de même si je redirige le résultat dans un fichier. [...]
[Merci de poster à l'endroit]
Qu'est-ce que tu lances exactement ? Est-ce que ton fichier de log est un fichier DOS ou UNIX, pourrais-tu poster le résultat du :
cat -nvte < fichier.log | head
pour qu'on y voie un peu plus clair ?
Note que pour awk ou grep, il faut passer le nom du fichier en argument ou son contenu sur l'entrée standard.
les commandes que vous me proposé n'on pas d'erreur de syntaxe mais je ne
récupère rien à l'écran de même si je redirige le résultat dans un fichier.
[...]
[Merci de poster à l'endroit]
Qu'est-ce que tu lances exactement ? Est-ce que ton fichier de
log est un fichier DOS ou UNIX, pourrais-tu poster le résultat
du :
cat -nvte < fichier.log | head
pour qu'on y voie un peu plus clair ?
Note que pour awk ou grep, il faut passer le nom du fichier en
argument ou son contenu sur l'entrée standard.
les commandes que vous me proposé n'on pas d'erreur de syntaxe mais je ne récupère rien à l'écran de même si je redirige le résultat dans un fichier. [...]
[Merci de poster à l'endroit]
Qu'est-ce que tu lances exactement ? Est-ce que ton fichier de log est un fichier DOS ou UNIX, pourrais-tu poster le résultat du :
cat -nvte < fichier.log | head
pour qu'on y voie un peu plus clair ?
Note que pour awk ou grep, il faut passer le nom du fichier en argument ou son contenu sur l'entrée standard.
Il s'agit d'un message multivolet au format MIME. --------------D7411870BCA9418CCEC41A80 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit
2003/11/12, 16:16(+01), Gérard Aubry:
les commandes que vous me proposé n'on pas d'erreur de syntaxe mais je ne récupère rien à l'écran de même si je redirige le résultat dans un fichier. [...]
[Merci de poster à l'endroit]
Qu'est-ce que tu lances exactement ? Est-ce que ton fichier de log est un fichier DOS ou UNIX, pourrais-tu poster le résultat du :
cat -nvte < fichier.log | head
pour qu'on y voie un peu plus clair ?
Note que pour awk ou grep, il faut passer le nom du fichier en argument ou son contenu sur l'entrée standard.
Voici la ligne que je lance, Groupe.001 étant mon log qui lui même est le résultat d'une commande cat (il est lisible par vi), je redirige le résultat vers le fichier resultat.txt qui reste désespérément vide
1 [01:34:25 AM 10/01/2003] Message 'T6501b0deadc0a801014f0' from '' to '' entitled 'Quicken Loans has received your Mortgage Inquiry' classification 'In Groupes Hager' size 1501 bytes.^M$ 2 [01:40:46 AM 10/01/2003] Message 'T6501b6aee5c0a801014f0' from '' to '' entitled 'Second Notice!!Urgent' classification 'In Groupes Hager' size 1457 bytes.^M$ 3 [04:13:37 PM 10/01/2003] Message 'T6504d5cc81c0a801015e0' from '' to '' entitled 'Information Needed to Refinance Your Home' classification 'In Groupes Hager' size 2545 bytes.^M$ 4 [08:31:11 AM 10/02/2003] Message 'T650854c471c0a801015e0' from '' to '' entitled '' classification 'In Groupes Hager' size 156866 bytes.^M$ 5 [07:56:13 PM 10/03/2003] Message 'T650fee4fc5c0a801011e0' from '' to '' entitled 'Information Needed to Refinance Your Home' classification 'In Groupes Hager' size 2545 bytes.^M$ 6 [03:14:17 AM 10/04/2003] Message 'T65117f60bec0a801011e0' from '' to '' entitled 'InterScan NT Alert' classification 'In Groupes Hager' size 1144 bytes.^M$ 7 [08:40:37 AM 10/04/2003] Message 'T6512aa23c6c0a801011e0' from '' to '' entitled 'InterScan NT Alert' classification 'In Groupes Hager' size 1144 bytes.^M$ 8 [12:49:44 AM 10/05/2003] Message 'T6516216653c0a801011e0' from '' to '' entitled 'InterScan NT Alert' classification 'In Groupes Hager' size 706 bytes.^M$ 9 [04:04:11 PM 10/05/2003] Message 'T65196699a0c0a801011e0' from '' to '' entitled 'InterScan NT Alert' classification 'In Groupes Hager' size 703 bytes.^M$ 10 [06:24:05 PM 10/05/2003] Message 'T6519e6afe9c0a801011e0' from '' to '' entitled 'InterScan NT Alert' classification 'In Groupes Hager' size 716 bytes.^M$
--------------D7411870BCA9418CCEC41A80--
Il s'agit d'un message multivolet au format MIME.
--------------D7411870BCA9418CCEC41A80
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
2003/11/12, 16:16(+01), Gérard Aubry:
les commandes que vous me proposé n'on pas d'erreur de syntaxe mais je ne
récupère rien à l'écran de même si je redirige le résultat dans un fichier.
[...]
[Merci de poster à l'endroit]
Qu'est-ce que tu lances exactement ? Est-ce que ton fichier de
log est un fichier DOS ou UNIX, pourrais-tu poster le résultat
du :
cat -nvte < fichier.log | head
pour qu'on y voie un peu plus clair ?
Note que pour awk ou grep, il faut passer le nom du fichier en
argument ou son contenu sur l'entrée standard.
Voici la ligne que je lance, Groupe.001 étant mon log qui lui même est le
résultat d'une commande cat (il est lisible par vi), je redirige le résultat vers
le fichier resultat.txt qui reste désespérément vide
Il s'agit d'un message multivolet au format MIME. --------------D7411870BCA9418CCEC41A80 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit
2003/11/12, 16:16(+01), Gérard Aubry:
les commandes que vous me proposé n'on pas d'erreur de syntaxe mais je ne récupère rien à l'écran de même si je redirige le résultat dans un fichier. [...]
[Merci de poster à l'endroit]
Qu'est-ce que tu lances exactement ? Est-ce que ton fichier de log est un fichier DOS ou UNIX, pourrais-tu poster le résultat du :
cat -nvte < fichier.log | head
pour qu'on y voie un peu plus clair ?
Note que pour awk ou grep, il faut passer le nom du fichier en argument ou son contenu sur l'entrée standard.
Voici la ligne que je lance, Groupe.001 étant mon log qui lui même est le résultat d'une commande cat (il est lisible par vi), je redirige le résultat vers le fichier resultat.txt qui reste désespérément vide
ci joint le fichier résultat de la commande que tu m'a demande
[...]
1 [01:34:25 AM 10/01/2003] Message 'T6501b0deadc0a801014f0' from '' to '' entitled 'Quicken Loans has received your Mortgage Inquiry' classification 'In Groupes Hager' size 1501 bytes.^M$ [...]
Le ^M en fin de ligne indique que c'est un fichier DOS (où le séparateur de ligne est CRLF ou lieu de LF sous Unix). Remplace la commande par:
ci joint le fichier résultat de la commande que tu m'a demande
[...]
1 [01:34:25 AM 10/01/2003] Message 'T6501b0deadc0a801014f0' from 'support@quickenloans.com' to 'group@hager.com' entitled 'Quicken Loans has received your Mortgage Inquiry' classification 'In Groupes Hager' size 1501 bytes.^M$
[...]
Le ^M en fin de ligne indique que c'est un fichier DOS (où le
séparateur de ligne est CRLF ou lieu de LF sous Unix). Remplace
la commande par:
ci joint le fichier résultat de la commande que tu m'a demande
[...]
1 [01:34:25 AM 10/01/2003] Message 'T6501b0deadc0a801014f0' from '' to '' entitled 'Quicken Loans has received your Mortgage Inquiry' classification 'In Groupes Hager' size 1501 bytes.^M$ [...]
Le ^M en fin de ligne indique que c'est un fichier DOS (où le séparateur de ligne est CRLF ou lieu de LF sous Unix). Remplace la commande par:
ci joint le fichier résultat de la commande que tu m'a demande
[...]
1 [01:34:25 AM 10/01/2003] Message 'T6501b0deadc0a801014f0' from '' to '' entitled 'Quicken Loans has received your Mortgage Inquiry' classification 'In Groupes Hager' size 1501 bytes.^M$ [...]
Le ^M en fin de ligne indique que c'est un fichier DOS (où le séparateur de ligne est CRLF ou lieu de LF sous Unix). Remplace la commande par:
ci joint le fichier résultat de la commande que tu m'a demande
[...]
1 [01:34:25 AM 10/01/2003] Message 'T6501b0deadc0a801014f0' from 'support@quickenloans.com' to 'group@hager.com' entitled 'Quicken Loans has received your Mortgage Inquiry' classification 'In Groupes Hager' size 1501 bytes.^M$
[...]
Le ^M en fin de ligne indique que c'est un fichier DOS (où le
séparateur de ligne est CRLF ou lieu de LF sous Unix). Remplace
la commande par:
ci joint le fichier résultat de la commande que tu m'a demande
[...]
1 [01:34:25 AM 10/01/2003] Message 'T6501b0deadc0a801014f0' from '' to '' entitled 'Quicken Loans has received your Mortgage Inquiry' classification 'In Groupes Hager' size 1501 bytes.^M$ [...]
Le ^M en fin de ligne indique que c'est un fichier DOS (où le séparateur de ligne est CRLF ou lieu de LF sous Unix). Remplace la commande par:
Super ça fonctionne Merci pour tout. Peut tu si tu le veut bien m'expliquer la syntaxe exacte de ta commande ......... Merci
Stephane Chazelas
2003/11/13, 10:25(+01), Gérard Aubry:
[...]
[Tu n'étais pas obligé de citer tout mon message (surtout ma signature !), je rappelle qu'on ne met dans un message que ce qu'on veut être lu.]
Peut tu si tu le veut bien m'expliquer la syntaxe exacte de ta commande .........
[tes lignes sont trop longues, sur usenet on se limite au plus à 80 caractères, de préférence 64 pour permettre des citations multiples sans dépasser les 80 caractères, en plus, ça facilite la lecture]
$<n> est le <n>ieme champ sur la ligne. NF est le nombre de champs sur la ligne. Donc $NF est le dernier champ, $(NF-1) l'avant-dernier, etc.
Pour chaque ligne, si le dernier champ est "bytes.r" (où r est le caractère CR de numéro 13), et que l'avant-avant-dernier est "size", alors incrémenter la variable "total" de la valeur de l'avant-dernier champ.
END { print total }
À la fin (après que la dernière ligne ait été lue), on affiche la valeur de la variable "total" suivie d'un saut de ligne (LF, NL, ^J, n).
[Tu n'étais pas obligé de citer tout mon message (surtout ma
signature !), je rappelle qu'on ne met dans un message que ce
qu'on veut être lu.]
Peut tu si tu le veut bien m'expliquer la syntaxe exacte de ta commande .........
[tes lignes sont trop longues, sur usenet on se limite au plus à
80 caractères, de préférence 64 pour permettre des citations
multiples sans dépasser les 80 caractères, en plus, ça facilite
la lecture]
$<n> est le <n>ieme champ sur la ligne. NF est le nombre de
champs sur la ligne. Donc $NF est le dernier champ, $(NF-1)
l'avant-dernier, etc.
Pour chaque ligne, si le dernier champ est "bytes.r" (où r est
le caractère CR de numéro 13), et que l'avant-avant-dernier est
"size", alors incrémenter la variable "total" de la valeur de
l'avant-dernier champ.
END { print total }
À la fin (après que la dernière ligne ait été lue), on affiche
la valeur de la variable "total" suivie d'un saut de ligne (LF,
NL, ^J, n).
[Tu n'étais pas obligé de citer tout mon message (surtout ma signature !), je rappelle qu'on ne met dans un message que ce qu'on veut être lu.]
Peut tu si tu le veut bien m'expliquer la syntaxe exacte de ta commande .........
[tes lignes sont trop longues, sur usenet on se limite au plus à 80 caractères, de préférence 64 pour permettre des citations multiples sans dépasser les 80 caractères, en plus, ça facilite la lecture]
$<n> est le <n>ieme champ sur la ligne. NF est le nombre de champs sur la ligne. Donc $NF est le dernier champ, $(NF-1) l'avant-dernier, etc.
Pour chaque ligne, si le dernier champ est "bytes.r" (où r est le caractère CR de numéro 13), et que l'avant-avant-dernier est "size", alors incrémenter la variable "total" de la valeur de l'avant-dernier champ.
END { print total }
À la fin (après que la dernière ligne ait été lue), on affiche la valeur de la variable "total" suivie d'un saut de ligne (LF, NL, ^J, n).