| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Другие языки > Отобразить строки файла между двумя условиями BASH |
| Автор: deber 23.11.2011, 13:34 | ||||||
| Нужен скрипт в одну строчку. Есть лог-файл и два условия (даты) Необходимо вывести данные, попадающие между условиями. Например лог такой:
Условия например такие: Вывести с 2011 Nov 23 07:15:00 по 2011 Nov 23 07:19:00 Вывод получится такой:
Самое простое, что приходит в голову:
Но, согласитесь, это как-то коряво. Да и не в корявости вопрос, "2011 Nov 23 07:15" может и не быть в лог-файле. А будет например 2011 Nov 23 07:16. Так же может ведь и не встретиться совпадение с "2011 Nov 23 07:19" Как решить данную проблему оптимальным способом? |
| Автор: Lipetsk 24.11.2011, 07:18 |
| не знаю всех возможностей grep, но тогда вам нужно вырезать "2011 Nov 23 " (это возможно), а из оставшихся выбрать по времени, используя условия ">=" и "<=" |
| Автор: vrabey 17.6.2012, 15:14 |
| cat logfile 2011 Nov 23 07:13:00 2011 Nov 23 07:16:00 2011 Nov 23 07:17:00 2011 Nov 23 07:19:00 2011 Nov 23 07:21:00 2011 Nov 23 07:23:00 #--------------------------------------- для конкретного случая grep '2011 Nov 23 07:1[4-9]' logfile или sed -n '/2011 Nov 23 07:1[5-9]/p' logfile 2011 Nov 23 07:16:00 2011 Nov 23 07:17:00 2011 Nov 23 07:19:00 #---------------------------------------- но если попытаться включить "07:21:00" то grep '2011 Nov 23 07:[15-19]' logfile - не работает: grep: Неверный конец диапазона #---------------------------------------- тогда можно вот так: sed -n '/2011 Nov 23 07:1[5-9]/,/2011 Nov 23 07:2[0-2]/p' logfile 2011 Nov 23 07:16:00 2011 Nov 23 07:17:00 2011 Nov 23 07:19:00 2011 Nov 23 07:21:00 |