Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отобразить строки файла между двумя условиями BASH 
:(
    Опции темы
deber
Дата 23.11.2011, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 28.2.2006

Репутация: нет
Всего: нет



Нужен скрипт в одну строчку.

Есть лог-файл и два условия (даты)
Необходимо вывести данные, попадающие между условиями.

Например лог такой:
Код

2011 Nov 23 07:13:00
2011 Nov 23 07:15:00
2011 Nov 23 07:17:00
2011 Nov 23 07:19:00
2011 Nov 23 07:21:00


Условия например такие:
Вывести с 2011 Nov 23 07:15:00 по 2011 Nov 23 07:19:00

Вывод получится такой:
Код

2011 Nov 23 07:15:00
2011 Nov 23 07:17:00
2011 Nov 23 07:19:00



Самое простое, что приходит в голову:
Код

cat logfile | grep -A 99999 "2011 Nov 23 07:15" | grep -B 99999 "2011 Nov 23 07:19"


Но, согласитесь, это как-то коряво.
Да и не в корявости вопрос, "2011 Nov 23 07:15" может и не быть в лог-файле. А будет например 2011 Nov 23 07:16.
Так же может ведь и не встретиться совпадение с "2011 Nov 23 07:19"

Как решить данную проблему оптимальным способом?

PM MAIL   Вверх
Lipetsk
Дата 24.11.2011, 07:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в форме ;)
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 28.1.2009
Где: Липецк

Репутация: 2
Всего: 5



не знаю всех возможностей grep, но тогда вам нужно вырезать "2011 Nov 23 " (это возможно), а из оставшихся выбрать по времени, используя условия ">=" и "<="
PM   Вверх
vrabey
Дата 17.6.2012, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 17.6.2012

Репутация: нет
Всего: нет



 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


Это сообщение отредактировал(а) vrabey - 17.6.2012, 15:22
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Добро пожаловать в раздел "Другие языки" форума Vingrad!

Void
Void

Раздел посвящён различным языкам программирования, для которых (в силу невысокой популярности) нет отдельного раздела (GPSS, Lua, MATLAB, Ada, Forth, Smalltalk, Tcl, REXX, AWK и др.)

  • Обязательно следуйте правилам Форума.
  • Пожалуйста, прочитайте и следуйте рекомендациям по работе в разделе и навигации по Форуму.
  • Для вставки текстов исходных кодов используйте подсветку синтаксиса из выплывающего списка Код в форме ответа. Если Ваш язык в списке не представлен, то используйте тег: [code=ваш_язык]код[/code], например, [code=ada]код[/code]. Если в будущем подсветка синтаксиса для указанного языка будет реализована, исходный код преобразится.
  • Помните, один вопрос - одна тема.

Приятного времяпрепровождения! С уважением, Void, kemiisto .

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Другие языки | Следующая тема »


 




[ Время генерации скрипта: 0.0843 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.