Предполагая, что поля даты и времени являются последовательными по своей природе (ваша третья строка не в порядке, поэтому я предполагаю, что здесь должна быть дата 2018-04-13
, к которой я ее изменил), вы можете сделать это с помощью простой Команда awk
в соответствии со следующими расшифровками (игнорируйте бит pax>
, это мое приглашение):
pax> awk '$1"_"$2>"2018-04-14_14:20"{exit} $1"_"$2>="2018-04-12_14:50"{print}' infile
2018-04-13 11:33 Error Hello1
2018-04-13 15:43 Error Hello2
2018-04-14 12:22 Error Hello3
Первое предложение просто завершается, когда вы находите дату за желаемым концом. Второе предложение (если первое предложение еще не вызвало выход) напечатает каждую строку, где дата и время находятся в начале или за пределами начала.
Если эти строки действительно разрешено быть не в порядке, и вам нужны строки в диапазоне дат, где бы они ни находились в файле, вам просто нужно обработать весь файл, распечатав те, которые соответствуют:
pax> awk '$1"_"$2>="2018-04-12_14:50"&&$1"_"$2<="2018-04-14_14:20"{print}' infile
2018-04-13 11:33 Error Hello1
2018-04-13 15:43 Error Hello2
2018-04-14 12:22 Error Hello3
Изменение обратно к исходному файлу с неправильной датой третьей строки, и в этом случае вы получите правильный вывод:
2018-04-13 11:33 Error Hello1
2018-04-14 12:22 Error Hello3