Я работаю с лог-файлами ежедневно. Я использовал sed для достижения своей цели по извлечению определенных строк данных между отметками времени. Например, я использую:
sed '/20150720 15:06:00/,/20150720 16:25:00/! d' logfile.log > /tmp/logpart.log
Однако это работает только тогда, когда метки времени действительно соответствуют строке в файле. Как я могу заставить sed работать с данными, которые мне нужны, без необходимости заходить в файл для получения фактических отметок времени? Например, в приведенном выше примере я просто хочу, чтобы все было между 15:00 и 16:30, независимо от того, есть ли в файле совпадающая отметка времени.
Поскольку ваши файлы журналов имеют хороший вкус лексикографически отсортированных меток времени, вы можете просто сравнивать строки с помощью awk, например:
awk 'substr($0,1,17)>="20150720 15:06:00" && substr($0,1,17)<="20150720 16:25:00"' <logfile.log
Я предположил, что ваша временная метка начинается с столбца 1 (нумерация от 1). Если нет, измените ,1,
соответственно.