Подсчет количества строк, начинающихся с даты и времени

Как подсчитать количество строк, начинающихся с отметки даты и времени, которая соответствует одному часу или меньше?

Файл в этом месте /home/liamcomfort/my.log.

Примером формата журнала является:

Nov 10 04:03:00 Friendly. Wholesale sweaters, no problems, sometimes overnight, inexpensive than large element. 
Nov 10 04:03:07 Now want to grab the spotlight form the official website. 
Nov 10 04:04:01 No matter who, overall planning, implementation than electric. I will be traveling to Japan tomorrow, at best. 
Nov 10 04:04:01 Get's not, the element of which that can be used, unless the slough, the bow to the policies, comprehensive package
0
задан 17 November 2013 в 02:41

2 ответа

now=$( date +%s )
one_hour_ago=$( date -d "now - 1 hour" +%s )
count=0
while read -ra words; do
    timestamp=$( date -d "${words[@]:0:3}" +%s )
    if (( $one_hour_ago <= $timestamp && $timestamp <= $now )); then
        (( count ++ ))
    fi
done < filename
echo $count
0
ответ дан 17 November 2013 в 02:41
while read M D T R; do [[ $(( $( date +"%s" ) - $( date -d "$M $D $T" +"%s" ) )) -lt 3600 ]] && (( ++C )); done; echo $C

Хороший приятель (извините, не смог устоять), который работает, но очень и очень уродливо ...
Следующий код, однако, показывает, как это можно сделать элегантным способом:

#!/bin/bash

#read the current date/time in unixtime format
NOW=$( date +"%s" )

while read MONTH DAY TIME REST
do
    #change the read date/time to unixtime
    THEN=$( date -d "$MONTH $DAY $TIME" +"%s" )

    #if the difference is less than 1 hour (=3600 seconds), increase the count
    (( ( NOW - THEN ) < 3600 )) && (( ++COUNT ))

done <"/home/liamcomfort/my.log"

echo "$COUNT"
0
ответ дан 17 November 2013 в 02:41

Другие вопросы по тегам:

Похожие вопросы: