2013-02-13 4 views
0

Je reçois ce qui suit de spamdb, où le troisième champ représente le temps en secondes depuis l'époque.sed: convertir le temps (3) secondes en un tableau en date imprimable (spamdb)

Cns# spamdb | fgrep TRAPPED 
TRAPPED|113.163.117.129|1360836903 
TRAPPED|113.171.216.201|1360837481 
TRAPPED|122.177.159.61|1360844596 
TRAPPED|36.231.9.231|1360865649 
TRAPPED|37.146.207.209|1360832096 
TRAPPED|212.156.98.210|1360837015 
TRAPPED|59.99.160.62|1360839785 
TRAPPED|86.127.116.162|1360840492 
TRAPPED|92.83.139.194|1360843056 
TRAPPED|219.71.12.150|1360844704 

Je veux trier ce tableau par le temps, et imprimer le champ de temps avec date -r, tel qu'il est présentable et clair lorsque l'événement est survenu.

Comment faire cela dans tcsh sur OpenBSD?

Le tri avec sort est facile, tout comme l'édition avec sed; mais comment faire sed exécuter date -r ou équivalent?

Répondre

0

Il y a en effet quelques obstacles ici: d'abord, vous devez essentiellement séparer les données, puis une partie est présentée telle quelle, tandis qu'une autre partie doit être transmise à date -r pour la mise en forme de la date, avant étant présenté à l'utilisateur.

Un autre obstacle fait que la sortie est aligné: apparemment, il est assez difficile de gérer le caractère de tabulation dans la coquille, peut-être seulement sur les systèmes BSD:

En outre, comme nous finissons par canaliser cela à sh pour l'exécution, nous devons utiliser un séparateur différent pour les champs autres que le caractère de tuyau, |.

Jusqu'à présent, c'est le meilleur extrait que je pouvais trouver, il semble fonctionner à merveille dans mon tcsh:

Cns# spamdb | fgrep TRAPPED | sort -n -t '|' -k 3 | sed -E -e 's#\|#@#g' \ 
    -e 's#^([A-Z]+)@([0-9.]+)@([0-9]+)$#"echo -n \2_"; "date -r \3"#g' | \ 
    xargs -n1 sh -c | awk '{gsub("_","\t",$0); print;}' 
37.146.207.209 Thu Feb 14 00:54:56 PST 2013 
113.163.117.129 Thu Feb 14 02:15:03 PST 2013 
212.156.98.210 Thu Feb 14 02:16:55 PST 2013 
113.171.216.201 Thu Feb 14 02:24:41 PST 2013 
59.99.160.62 Thu Feb 14 03:03:05 PST 2013 
86.127.116.162 Thu Feb 14 03:14:52 PST 2013 
92.83.139.194 Thu Feb 14 03:57:36 PST 2013 
122.177.159.61 Thu Feb 14 04:23:16 PST 2013 
219.71.12.150 Thu Feb 14 04:25:04 PST 2013 
36.231.9.231 Thu Feb 14 10:14:09 PST 2013 
Questions connexes