Как извлечь данные из одной строки в другую и сохранить на выходе
Хотите получить определенный час для другого и сохранить вывод. Первый час - моя отправная точка, например:
Nov 20 13:42:52 host sendmail[14819]: qAKCgpxF014819: Milter: read returned -1: Connection reset by mail.yahoo.com
И мой финиш:
Nov 20 16:22:23 host sendmail[16326]: qAKCgpxF016326: Milter: read returned -1: Connection reset by mail.yahoo.com
Мне нужно сохранить все данные от моей начальной точки до моей конечной точки только в файл.
2 ответа
Решение
Если записи отсортированы по времени, вы можете просто
sed -n '/^Nov 20 13:42:52/,/^Nov 20 16:22:23/p' input.log > output.log
Осторожно, если есть еще записи с временем окончания, будет напечатана только первая. Вы можете улучшить это,
sed -n '/start/,/end/{p;d};/end/p'
Это работает для вас? (не тестировал)
awk -F' |:' 'BEGIN{m="Nov";d=20;sh=13;eh=16}$1==m && $2==d && $3>=sh && $3<=eh' file