Получаем примерную дату за последние сутки с нужной точностью
olddate=$(date -d "-24 hours" "+%d/%b/%Y:%H:%M:%S")
Но тут есть проблема. Если в данную секунду в прошлом не было ни одной записи, мы пролетим мимо. Поэтому округлим хотя бы до часа, но все равно остается риск, если приложение было выключено целый час, то мы не найдем начальную позицию вообще. Как эту проблему решать я не знаю, зависит от того что у вас в файле всегда будет что-то или не всегда и если не всегда, тогда все усложняется. Но давайте пойдем от простого, просто округлить хотя бы до часа:
olddate=$(date -d "-24 hours" "+%d/%b/%Y:%H")
Потом через sed можно найти текст от указанной даты и до конца файла, и тут же фильтруем router:
sed -nE "/$olddate/,\${/router/p}" file.log|wc -l
Ну или однострочник
sed -nE "/$(date -d "-24 hours" "+%d/%b/%Y:%H")/,\${/router/p}" file.log|wc -l