Puisque je veux spécifier en notation HH: MM: SS, utilisez sed pour rendre la partie temporelle indépendante. À propos, le numéro de port à la fin de l'adresse IP est également omis. En spécifiant l'heure de début et l'heure de fin dans HH: MM: SS, le code d'état sera modifié dans l'heure spécifiée. Il est possible d'extraire la ligne qui est le code d'erreur.
qiita.rb
sed -r -e\ 's/(:[0-9]{4,5}|\/202[0-9]:)/ /'{,} /var/log/apache2/20200715/access_log | awk '"HH:MM:SS" <=$5&&$5<= "HH:MM:SS" {if($10>=400&&$10<=599)print $0}'
Quand je l'ai utilisé, cela fonctionnait comme prévu, mais il était assez difficile de modifier l'heure. Alors, est-il possible d'afficher une heure avant l'heure actuelle sans se soucier de la modifier? Suite à une réflexion, j'ai décidé d'utiliser la date et de laisser awk définir la variable.
qiita.rb
sed -r -e\ 's/(:[0-9]{4,5}|\/202[0-9]:)/ /'{,} /var/log/apache2/20200715/access_log | awk -va=`date -d "60 minute ago" +%H:%M:%S` -vb=`date +%H:%M:%S` '{if($5>a&&$5<b&&$10>=400&&$10<=599)print $0}'
Si vous souhaitez réduire la sortie dans une certaine mesure, spécifiez la pièce à imprimer.
Recommended Posts