Utilisation de la commande date dans awk

Fermé
Hamss - 24 déc. 2013 à 16:25
dubcek Messages postés 18764 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 9 février 2025 - 25 déc. 2013 à 09:30
Bonjour les champions
Besoin en urgence.

Je developpe un scrip unix pour traiter des log de connexions. je dois supprimer les lignes de log contenant les erreurs de date, Ip et les doublons.

Voila en tout premier ce que j'ai fais:
1) je verifie le format des champs ip et date ok je prend la ligne
2) je verifie le champ date valide Ok je prend la ligne: sauf que je n'arrive pas à comparer mon champs de date à ma date de la veille car dans awk la commande date n'est pas reconnue, comment dois je faire. elle ne reconnnait non plus les autre commande de shell (j'utilise le shell bash)

voila mon debut de script
#! /usr/bin/awk -f

BEGIN { print "Verification des Dates dans le fichier logAPP..."; $date; FS=" "; good=""}
#navi_Os=$11
$1 ~ /^([0-9][0-9][0-9][0-9])\-(0[1-9]|1[02])\-([012][0-9]|3[01])$/ &&
$3 ~ /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/ { print $3" "$1" "$2" "$8" ""-"" "$10" "$11" ""-" > "Fichier_Pre_Traite"}Fichier_log_IIS

#{if ($1==(date -d yesterday --rfc-3339 date)) print $3" "$1" "$2" "$8" ""-"" "$10" "$11" "$12" ""-" > "Fichier_Pre_Traite"}Fichier_Pre_Traite

END { print date "\nFin:\n" }

Au passage quelqu'un aurait la gentillesse de filer ou de dire comment generer un fichier de log au format iis

Merci et joyeux noel



1 réponse

dubcek Messages postés 18764 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 9 février 2025 5 624
Modifié par dubcek le 25/12/2013 à 10:10
hello
voila comment exécuter une commande dans awk ou assigner une variable et la passer dans awk
$ echo | awk '{"date -d yesterday --rfc-3339 date" | getline d; print "date de hier", d}'
date de hier 2013-12-24
$
$ hier=$(date -d yesterday --rfc-3339 date)
$ awk -v date=$hier 'BEGIN{print date}'
2013-12-24
$
1