J'ai un fichier généré par arpwatch qui contient des lignes contenant 3
ou 4 champs séparés par une tabulation.
Ça ressemble à ça:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
0:c:76:45:cb:be 10.176.184.69 1159452619
0:10:b5:a4:f6:d8 10.176.202.9 1164988574 B-202-09
0:11:9:b9:32:6f 10.176.202.9 1160059098 B-202-09
0:2:44:16:67:58 10.176.182.131 1164897841
8<-----------8<---------8<----------8<----------8<----------8<----------8<
(Rien que cet exemple montre pourquoi je dois me palucher ce fichier)
Ce que je veux, c'est ajouter un nouveau <champ4>, qui serait la date en
human-readable (la sortie de date +%d"/"%m"/"%Y -d @<champ3>) et donc
repousser l'éventuel nom de machine comme <champ5>.
Dans l'exemple qui nous interesse, ça donnerait ça:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
0:c:76:45:cb:be 10.176.184.69 1159452619 28/09/2006
0:10:b5:a4:f6:d8 10.176.202.9 1164988574 01/12/2006 B-202-09
0:11:9:b9:32:6f 10.176.202.9 1160059098 05/10/2006 B-202-09
0:2:44:16:67:58 10.176.182.131 1164897841 30/11/2006
8<-----------8<---------8<----------8<----------8<----------8<----------8<
Évidement vu la qualité des contributeurs ici, je ne doute pas que cela
sera réglé en moins de 3 minutes et 2 lignes de sed ou de awk, mais si
j'osais je demanderais en plus une petite explication didactique afin
que je puisse me débrouiller un peu seul à l'avenir.
Merci de votre aide.
--
<|Leo404|> tu peux m'aider à configurer ma connexion?
delepine| Mais encore ?
<|Leo404|> va te faire enculer
-+- Leo404 in Guide du linuxien pervers - "Connexions inavouables" -+-
J'ai un fichier généré par arpwatch qui contient des lignes contenant 3 ou 4 champs séparés par une tabulation. Ça ressemble à ça: 8<-----------8<---------8<----------8<----------8<----------8<----------8< 0:c:76:45:cb:be 10.176.184.69 1159452619 0:10:b5:a4:f6:d8 10.176.202.9 1164988574 B-202-09 0:11:9:b9:32:6f 10.176.202.9 1160059098 B-202-09 0:2:44:16:67:58 10.176.182.131 1164897841 8<-----------8<---------8<----------8<----------8<----------8<----------8< (Rien que cet exemple montre pourquoi je dois me palucher ce fichier)
Ce que je veux, c'est ajouter un nouveau <champ4>, qui serait la date en human-readable (la sortie de date +%d"/"%m"/"%Y -d @<champ3>) et donc repousser l'éventuel nom de machine comme <champ5>. Dans l'exemple qui nous interesse, ça donnerait ça: 8<-----------8<---------8<----------8<----------8<----------8<----------8< 0:c:76:45:cb:be 10.176.184.69 1159452619 28/09/2006 0:10:b5:a4:f6:d8 10.176.202.9 1164988574 01/12/2006 B-202-09 0:11:9:b9:32:6f 10.176.202.9 1160059098 05/10/2006 B-202-09 0:2:44:16:67:58 10.176.182.131 1164897841 30/11/2006 8<-----------8<---------8<----------8<----------8<----------8<----------8< [...]
-F: field separator on input OFS: output field separator %F: date au format 2006-10-05 (eviter 05/10/2006 qui est source de malentendu pour les americains et qui n'est pas facile a trier) 1: "true" condition (pour affichier la ligne).
-- Stéphane
2006-12-6, 09:54(+01), Hugolino:
Bonjour,
J'ai un fichier généré par arpwatch qui contient des lignes contenant 3
ou 4 champs séparés par une tabulation.
Ça ressemble à ça:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
0:c:76:45:cb:be 10.176.184.69 1159452619
0:10:b5:a4:f6:d8 10.176.202.9 1164988574 B-202-09
0:11:9:b9:32:6f 10.176.202.9 1160059098 B-202-09
0:2:44:16:67:58 10.176.182.131 1164897841
8<-----------8<---------8<----------8<----------8<----------8<----------8<
(Rien que cet exemple montre pourquoi je dois me palucher ce fichier)
Ce que je veux, c'est ajouter un nouveau <champ4>, qui serait la date en
human-readable (la sortie de date +%d"/"%m"/"%Y -d @<champ3>) et donc
repousser l'éventuel nom de machine comme <champ5>.
Dans l'exemple qui nous interesse, ça donnerait ça:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
0:c:76:45:cb:be 10.176.184.69 1159452619 28/09/2006
0:10:b5:a4:f6:d8 10.176.202.9 1164988574 01/12/2006 B-202-09
0:11:9:b9:32:6f 10.176.202.9 1160059098 05/10/2006 B-202-09
0:2:44:16:67:58 10.176.182.131 1164897841 30/11/2006
8<-----------8<---------8<----------8<----------8<----------8<----------8<
[...]
-F: field separator on input
OFS: output field separator
%F: date au format 2006-10-05 (eviter 05/10/2006 qui est source
de malentendu pour les americains et qui n'est pas facile a
trier)
1: "true" condition (pour affichier la ligne).
J'ai un fichier généré par arpwatch qui contient des lignes contenant 3 ou 4 champs séparés par une tabulation. Ça ressemble à ça: 8<-----------8<---------8<----------8<----------8<----------8<----------8< 0:c:76:45:cb:be 10.176.184.69 1159452619 0:10:b5:a4:f6:d8 10.176.202.9 1164988574 B-202-09 0:11:9:b9:32:6f 10.176.202.9 1160059098 B-202-09 0:2:44:16:67:58 10.176.182.131 1164897841 8<-----------8<---------8<----------8<----------8<----------8<----------8< (Rien que cet exemple montre pourquoi je dois me palucher ce fichier)
Ce que je veux, c'est ajouter un nouveau <champ4>, qui serait la date en human-readable (la sortie de date +%d"/"%m"/"%Y -d @<champ3>) et donc repousser l'éventuel nom de machine comme <champ5>. Dans l'exemple qui nous interesse, ça donnerait ça: 8<-----------8<---------8<----------8<----------8<----------8<----------8< 0:c:76:45:cb:be 10.176.184.69 1159452619 28/09/2006 0:10:b5:a4:f6:d8 10.176.202.9 1164988574 01/12/2006 B-202-09 0:11:9:b9:32:6f 10.176.202.9 1160059098 05/10/2006 B-202-09 0:2:44:16:67:58 10.176.182.131 1164897841 30/11/2006 8<-----------8<---------8<----------8<----------8<----------8<----------8< [...]
-F: field separator on input OFS: output field separator %F: date au format 2006-10-05 (eviter 05/10/2006 qui est source de malentendu pour les americains et qui n'est pas facile a trier) 1: "true" condition (pour affichier la ligne).
-- Stéphane
Hugolino
Le Wed, 06 Dec 2006 08:42:27 GMT, Stephane Chazelas a écrit:
-F: field separator on input OFS: output field separator %F: date au format 2006-10-05 (eviter 05/10/2006 qui est source de malentendu pour les americains et qui n'est pas facile a trier) 1: "true" condition (pour affichier la ligne).
OK, super. Merci pour l'explication ça m'a donné un petit exemple simple qui m'a encouragé à ouvrir Scripts Sous Linux de C.Blaess car j'avais ça: gawk: {$4 = strftime("%F",$3) "t" $5 = strftime("%T",$3) "t" $4}1 ^ syntax error
Et la solution est page 291: il faut séparer les actions par des points-virgules ou des sauts de lignes.
Merci à toi
--
Dans la Vraie vie, (presque) tout le monde s'accorde à me trouver charmante... La vraie vie n'existe pas, c'est seulement un troll qui a eu du succès.
Hugo (né il y a 1 344 846 557 secondes)
Le Wed, 06 Dec 2006 08:42:27 GMT, Stephane Chazelas a écrit:
-F: field separator on input
OFS: output field separator
%F: date au format 2006-10-05 (eviter 05/10/2006 qui est source
de malentendu pour les americains et qui n'est pas facile a
trier)
1: "true" condition (pour affichier la ligne).
OK, super. Merci pour l'explication ça m'a donné un petit exemple simple
qui m'a encouragé à ouvrir Scripts Sous Linux de C.Blaess car j'avais
ça:
gawk: {$4 = strftime("%F",$3) "t" $5 = strftime("%T",$3) "t" $4}1
^ syntax error
Et la solution est page 291: il faut séparer les actions par des
points-virgules ou des sauts de lignes.
Merci à toi
--
Dans la Vraie vie, (presque) tout le monde s'accorde à me trouver
charmante...
La vraie vie n'existe pas, c'est seulement un troll qui a eu du succès.
-F: field separator on input OFS: output field separator %F: date au format 2006-10-05 (eviter 05/10/2006 qui est source de malentendu pour les americains et qui n'est pas facile a trier) 1: "true" condition (pour affichier la ligne).
OK, super. Merci pour l'explication ça m'a donné un petit exemple simple qui m'a encouragé à ouvrir Scripts Sous Linux de C.Blaess car j'avais ça: gawk: {$4 = strftime("%F",$3) "t" $5 = strftime("%T",$3) "t" $4}1 ^ syntax error
Et la solution est page 291: il faut séparer les actions par des points-virgules ou des sauts de lignes.
Merci à toi
--
Dans la Vraie vie, (presque) tout le monde s'accorde à me trouver charmante... La vraie vie n'existe pas, c'est seulement un troll qui a eu du succès.
Hugo (né il y a 1 344 846 557 secondes)
talon
Hugolino wrote:
Le Wed, 06 Dec 2006 08:42:27 GMT, Stephane Chazelas a écrit:
-F: field separator on input OFS: output field separator %F: date au format 2006-10-05 (eviter 05/10/2006 qui est source de malentendu pour les americains et qui n'est pas facile a trier) 1: "true" condition (pour affichier la ligne).
OK, super. Merci pour l'explication ça m'a donné un petit exemple simple qui m'a encouragé à ouvrir Scripts Sous Linux de C.Blaess car j'avais ça: gawk: {$4 = strftime("%F",$3) "t" $5 = strftime("%T",$3) "t" $4}1 ^ syntax error
Et la solution est page 291: il faut séparer les actions par des points-virgules ou des sauts de lignes.
Merci à toi
Je te recommande le tutoriel suivant: http://www.grymoire.com/Unix/Awk.html qui explique à mon avis de façon claire et simple comment utiliser awk, et sans se limiter (ou s'étendre...) à gawk. Je trouve que awk est un outil formidable pour toutes sortes de petites choses - mais bon il n'y a justement pas strftime dans le awk standard - dommage.
--
Michel TALON
Hugolino <hugolino@free.fr> wrote:
Le Wed, 06 Dec 2006 08:42:27 GMT, Stephane Chazelas a écrit:
-F: field separator on input
OFS: output field separator
%F: date au format 2006-10-05 (eviter 05/10/2006 qui est source
de malentendu pour les americains et qui n'est pas facile a
trier)
1: "true" condition (pour affichier la ligne).
OK, super. Merci pour l'explication ça m'a donné un petit exemple simple
qui m'a encouragé à ouvrir Scripts Sous Linux de C.Blaess car j'avais
ça:
gawk: {$4 = strftime("%F",$3) "t" $5 = strftime("%T",$3) "t" $4}1
^ syntax error
Et la solution est page 291: il faut séparer les actions par des
points-virgules ou des sauts de lignes.
Merci à toi
Je te recommande le tutoriel suivant:
http://www.grymoire.com/Unix/Awk.html
qui explique à mon avis de façon claire et simple comment utiliser awk,
et sans se limiter (ou s'étendre...) à gawk. Je trouve que awk est un
outil formidable pour toutes sortes de petites choses - mais bon il n'y
a justement pas strftime dans le awk standard - dommage.
-F: field separator on input OFS: output field separator %F: date au format 2006-10-05 (eviter 05/10/2006 qui est source de malentendu pour les americains et qui n'est pas facile a trier) 1: "true" condition (pour affichier la ligne).
OK, super. Merci pour l'explication ça m'a donné un petit exemple simple qui m'a encouragé à ouvrir Scripts Sous Linux de C.Blaess car j'avais ça: gawk: {$4 = strftime("%F",$3) "t" $5 = strftime("%T",$3) "t" $4}1 ^ syntax error
Et la solution est page 291: il faut séparer les actions par des points-virgules ou des sauts de lignes.
Merci à toi
Je te recommande le tutoriel suivant: http://www.grymoire.com/Unix/Awk.html qui explique à mon avis de façon claire et simple comment utiliser awk, et sans se limiter (ou s'étendre...) à gawk. Je trouve que awk est un outil formidable pour toutes sortes de petites choses - mais bon il n'y a justement pas strftime dans le awk standard - dommage.
--
Michel TALON
Hugolino
Le Wed, 6 Dec 2006 15:57:30 +0000 (UTC), Michel Talon a écrit:
Je te recommande le tutoriel suivant: http://www.grymoire.com/Unix/Awk.html qui explique à mon avis de façon claire et simple comment utiliser awk, et sans se limiter (ou s'étendre...) à gawk. Je trouve que awk est un outil formidable pour toutes sortes de petites choses - mais bon il n'y a justement pas strftime dans le awk standard - dommage.
OK, de la lecture: parfait! Je suis aussi remonté d'un niveau pour y trouver http://www.grymoire.com/Unix/Regular.html, donc merci à toi aussi. Et puis tu peux aussi voir ici http://www.roulaize.fr/infos-machines.php qu'une certaine HPPA-RISC sert encore... (bon je devrais pas y mettre des photos de 2 Go, mais elle sert ;-)
--
I still maintain the point that designing a monolithic kernel in 1991 is a fundamental error. Be thankful you are not my student. You would not get a high grade for such a design :-) That's ok. Einstein got lousy grades in math and physics.
Le Wed, 6 Dec 2006 15:57:30 +0000 (UTC), Michel Talon a écrit:
Je te recommande le tutoriel suivant:
http://www.grymoire.com/Unix/Awk.html
qui explique à mon avis de façon claire et simple comment utiliser awk,
et sans se limiter (ou s'étendre...) à gawk. Je trouve que awk est un
outil formidable pour toutes sortes de petites choses - mais bon il n'y
a justement pas strftime dans le awk standard - dommage.
OK, de la lecture: parfait! Je suis aussi remonté d'un niveau pour y
trouver http://www.grymoire.com/Unix/Regular.html, donc merci à toi
aussi.
Et puis tu peux aussi voir ici http://www.roulaize.fr/infos-machines.php
qu'une certaine HPPA-RISC sert encore... (bon je devrais pas y mettre
des photos de 2 Go, mais elle sert ;-)
--
I still maintain the point that designing a monolithic kernel in 1991
is a fundamental error. Be thankful you are not my student. You would
not get a high grade for such a design :-)
That's ok. Einstein got lousy grades in math and physics.
Le Wed, 6 Dec 2006 15:57:30 +0000 (UTC), Michel Talon a écrit:
Je te recommande le tutoriel suivant: http://www.grymoire.com/Unix/Awk.html qui explique à mon avis de façon claire et simple comment utiliser awk, et sans se limiter (ou s'étendre...) à gawk. Je trouve que awk est un outil formidable pour toutes sortes de petites choses - mais bon il n'y a justement pas strftime dans le awk standard - dommage.
OK, de la lecture: parfait! Je suis aussi remonté d'un niveau pour y trouver http://www.grymoire.com/Unix/Regular.html, donc merci à toi aussi. Et puis tu peux aussi voir ici http://www.roulaize.fr/infos-machines.php qu'une certaine HPPA-RISC sert encore... (bon je devrais pas y mettre des photos de 2 Go, mais elle sert ;-)
--
I still maintain the point that designing a monolithic kernel in 1991 is a fundamental error. Be thankful you are not my student. You would not get a high grade for such a design :-) That's ok. Einstein got lousy grades in math and physics.
Stephane Chazelas
2006-12-6, 16:33(+01), Hugolino:
Le Wed, 06 Dec 2006 08:42:27 GMT, Stephane Chazelas a écrit:
-F: field separator on input OFS: output field separator %F: date au format 2006-10-05 (eviter 05/10/2006 qui est source de malentendu pour les americains et qui n'est pas facile a trier) 1: "true" condition (pour affichier la ligne).
OK, super. Merci pour l'explication ça m'a donné un petit exemple simple qui m'a encouragé à ouvrir Scripts Sous Linux de C.Blaess car j'avais ça: gawk: {$4 = strftime("%F",$3) "t" $5 = strftime("%T",$3) "t" $4}1 ^ syntax error
Et la solution est page 291: il faut séparer les actions par des points-virgules ou des sauts de lignes.
-F: field separator on input
OFS: output field separator
%F: date au format 2006-10-05 (eviter 05/10/2006 qui est source
de malentendu pour les americains et qui n'est pas facile a
trier)
1: "true" condition (pour affichier la ligne).
OK, super. Merci pour l'explication ça m'a donné un petit exemple simple
qui m'a encouragé à ouvrir Scripts Sous Linux de C.Blaess car j'avais
ça:
gawk: {$4 = strftime("%F",$3) "t" $5 = strftime("%T",$3) "t" $4}1
^ syntax error
Et la solution est page 291: il faut séparer les actions par des
points-virgules ou des sauts de lignes.
-F: field separator on input OFS: output field separator %F: date au format 2006-10-05 (eviter 05/10/2006 qui est source de malentendu pour les americains et qui n'est pas facile a trier) 1: "true" condition (pour affichier la ligne).
OK, super. Merci pour l'explication ça m'a donné un petit exemple simple qui m'a encouragé à ouvrir Scripts Sous Linux de C.Blaess car j'avais ça: gawk: {$4 = strftime("%F",$3) "t" $5 = strftime("%T",$3) "t" $4}1 ^ syntax error
Et la solution est page 291: il faut séparer les actions par des points-virgules ou des sauts de lignes.
-F: field separator on input OFS: output field separator %F: date au format 2006-10-05 (eviter 05/10/2006 qui est source de malentendu pour les americains et qui n'est pas facile a trier) 1: "true" condition (pour affichier la ligne).
OK, super. Merci pour l'explication ça m'a donné un petit exemple simple qui m'a encouragé à ouvrir Scripts Sous Linux de C.Blaess car j'avais ça: gawk: {$4 = strftime("%F",$3) "t" $5 = strftime("%T",$3) "t" $4}1 ^ syntax error
Et la solution est page 291: il faut séparer les actions par des points-virgules ou des sauts de lignes.
-F: field separator on input
OFS: output field separator
%F: date au format 2006-10-05 (eviter 05/10/2006 qui est source
de malentendu pour les americains et qui n'est pas facile a
trier)
1: "true" condition (pour affichier la ligne).
OK, super. Merci pour l'explication ça m'a donné un petit exemple simple
qui m'a encouragé à ouvrir Scripts Sous Linux de C.Blaess car j'avais
ça:
gawk: {$4 = strftime("%F",$3) "t" $5 = strftime("%T",$3) "t" $4}1
^ syntax error
Et la solution est page 291: il faut séparer les actions par des
points-virgules ou des sauts de lignes.
-F: field separator on input OFS: output field separator %F: date au format 2006-10-05 (eviter 05/10/2006 qui est source de malentendu pour les americains et qui n'est pas facile a trier) 1: "true" condition (pour affichier la ligne).
OK, super. Merci pour l'explication ça m'a donné un petit exemple simple qui m'a encouragé à ouvrir Scripts Sous Linux de C.Blaess car j'avais ça: gawk: {$4 = strftime("%F",$3) "t" $5 = strftime("%T",$3) "t" $4}1 ^ syntax error
Et la solution est page 291: il faut séparer les actions par des points-virgules ou des sauts de lignes.
car il ne "survit" pas à la séparation des deux actions par le point-virgule ?
En tout cas merci de ton aide.
--
c'était pour moi, je ne me risquerais pas à faire du traitement de texte avec xemacs ou vim, à moins bien sûr de coupler le tout à TeX/LaTeX. je pourrai savoir comment on fait cela
-+- LJ in Guide du linuxien pervers - "savoir se donner des objectifs."
Le Thu, 07 Dec 2006 19:10:11 GMT, Stephane Chazelas a écrit:
car il ne "survit" pas à la séparation des deux actions par le
point-virgule ?
En tout cas merci de ton aide.
--
c'était pour moi, je ne me risquerais pas à faire du traitement de texte
avec xemacs ou vim, à moins bien sûr de coupler le tout à TeX/LaTeX.
je pourrai savoir comment on fait cela
-+- LJ in Guide du linuxien pervers - "savoir se donner des objectifs."
car il ne "survit" pas à la séparation des deux actions par le point-virgule ?
En tout cas merci de ton aide.
--
c'était pour moi, je ne me risquerais pas à faire du traitement de texte avec xemacs ou vim, à moins bien sûr de coupler le tout à TeX/LaTeX. je pourrai savoir comment on fait cela
-+- LJ in Guide du linuxien pervers - "savoir se donner des objectifs."
Stephane Chazelas
2006-12-8, 09:50(+01), Hugolino:
Le Thu, 07 Dec 2006 19:10:11 GMT, Stephane Chazelas a écrit:
car il ne "survit" pas à la séparation des deux actions par le point-virgule ? [...]
Ben, si tu fais
a = "foo"; a = "bar"; b = a;
b va contenir "bar" et pas "foo", ca me semble logique.
awk a a peu pres la meme syntaxe que C et se comporte a peu pres pareil.
-- Stéphane
Hugolino
Le Fri, 08 Dec 2006 09:06:41 GMT, Stephane Chazelas a écrit:
[...]
Ben, si tu fais
a = "foo"; a = "bar"; b = a;
b va contenir "bar" et pas "foo", ca me semble logique.
Avant l'exécution de la ligne: gawk -F't' -v OFS='t' '{$4 = strftime("%F",$3) "t" $4}1' la variable $4 contient le nom de la machine. Lors de l'exécution cette variable est remplacée par la date. Mais une nouvelle variable $5 est « magiquement » créée pour stocker le nom de la machine.
Donc je ne comprends pas ton exemple avec foobar
Merci de m'aider à comprendre
--
Mais je trouve que la salkware est bien surtout la 7.0 Ouppps excusez moi pas avoir ecorcher le nom de la distrib , c'est
slakware !! Je suis cretin -+- Julien in Guide du linuxien pervers - L'erreur est humaine -+-
Le Fri, 08 Dec 2006 09:06:41 GMT, Stephane Chazelas a écrit:
[...]
Ben, si tu fais
a = "foo";
a = "bar";
b = a;
b va contenir "bar" et pas "foo", ca me semble logique.
Avant l'exécution de la ligne:
gawk -F't' -v OFS='t' '{$4 = strftime("%F",$3) "t" $4}1'
la variable $4 contient le nom de la machine.
Lors de l'exécution cette variable est remplacée par la date.
Mais une nouvelle variable $5 est « magiquement » créée pour stocker le
nom de la machine.
Donc je ne comprends pas ton exemple avec foobar
Merci de m'aider à comprendre
--
Mais je trouve que la salkware est bien surtout la 7.0
Ouppps excusez moi pas avoir ecorcher le nom de la distrib , c'est
slakware !! Je suis cretin
-+- Julien in Guide du linuxien pervers - L'erreur est humaine -+-
Le Fri, 08 Dec 2006 09:06:41 GMT, Stephane Chazelas a écrit:
[...]
Ben, si tu fais
a = "foo"; a = "bar"; b = a;
b va contenir "bar" et pas "foo", ca me semble logique.
Avant l'exécution de la ligne: gawk -F't' -v OFS='t' '{$4 = strftime("%F",$3) "t" $4}1' la variable $4 contient le nom de la machine. Lors de l'exécution cette variable est remplacée par la date. Mais une nouvelle variable $5 est « magiquement » créée pour stocker le nom de la machine.
Donc je ne comprends pas ton exemple avec foobar
Merci de m'aider à comprendre
--
Mais je trouve que la salkware est bien surtout la 7.0 Ouppps excusez moi pas avoir ecorcher le nom de la distrib , c'est
slakware !! Je suis cretin -+- Julien in Guide du linuxien pervers - L'erreur est humaine -+-