Предполагая упрощенную «временную» среду (без преобразования часовых поясов, без перехода на летнее время ), вы можете указать awk диапазоны дат в секундах -начиная с -эпохи -, а затем иметь awk конвертировать каждую дату в секунды -с -эпохи -и печатать только строки в этом диапазоне:
awk -v from=$(date -d "2018-04-04 11:40:45" +%s) \
-v to=$(date -d "2018-04-04 11:40:47" +%s) \
'{ "date -d \""$1 " "$2"\" +%s" | getline s;
if (from <= s && s <= to) print;
}' < input
2018-04-04 11:40:46 INFO RestAssuredService:184 - some thing.......
Это не особенно эффективно, так как вызывает date
для каждой строки; его можно улучшить для поиска в кэше, если это станет проблемой.