Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Поиск в файле (grep)  (Прочитано 1547 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Artur_News

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Поиск в файле (grep)
« : 05 Апреля 2016, 17:58:36 »
Всем привет.
Подскажите: необходимо найти строки в которых упоминается к примеру слово «Word», но в разные промежутки времени. К примеру за один промежуток будет так: grep «04-04-2016 1[5-7]:» filename | grep «Word». А если необходимо добавить второй промежуток, к примеру: grep «08-01-2016 10:1[5-9]:» filename | grep «Word»? Простое перечисление выводит не полный список: grep «04-04-2016 1[5-7]:» filename | grep «Word» | grep «08-01-2016 10:1[5-7]:» filename | grep «Word». В этом случае выводится только второй промежуток времени. Как правильно составить запрос или такое не возможно?

ТС не появлялся на Форуме более полугода по состоянию на 13/07/2019 (последняя явка: 08/04/2016). Модератором раздела принято решение закрыть тему.
--zg_nico
« Последнее редактирование: 13 Июля 2019, 23:54:07 от zg_nico »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: Поиск в файле (grep)
« Ответ #1 : 05 Апреля 2016, 18:13:52 »
При чём тут настройка системы?

И сначала научитесь задавать вопрос. Я только с третьего раза понял, что Вы хотите Вам задал препод

Оффлайн Artur_News

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Поиск в файле (grep)
« Ответ #2 : 05 Апреля 2016, 20:40:53 »
Перефразирую:
Есть три параметра для поиска строк в файле: два временных отрезка и слово. Как сделать поиск в одном промежутке времени я понял. Пример:grep «04-04-2016 1[5-7]:» filename | grep «Word».
Но составить запрос для поиска в двух промежутках времени не получается. Пишу: grep «04-04-2016 1[5-7]:» filename | grep «Word» | grep «08-01-2016 10:1[5-7]:» filename | grep «Word» и в этом случае результат выводиться по второму промежутку времени. Как правильно составить запрос для поиска строк в файле с параметрами: два временных отрезка и слово?

Оффлайн Jursha

  • Участник
  • *
  • Сообщений: 237
    • Просмотр профиля
Re: Поиск в файле (grep)
« Ответ #3 : 05 Апреля 2016, 20:49:11 »
Перефразирую:
Есть три параметра для поиска строк в файле: два временных отрезка и слово. Как сделать поиск в одном промежутке времени я понял. Пример:grep «04-04-2016 1[5-7]:» filename | grep «Word».
Но составить запрос для поиска в двух промежутках времени не получается. Пишу: grep «04-04-2016 1[5-7]:» filename | grep «Word» | grep «08-01-2016 10:1[5-7]:» filename | grep «Word» и в этом случае результат выводиться по второму промежутку времени. Как правильно составить запрос для поиска строк в файле с параметрами: два временных отрезка и слово?
а если использовать двойной амперсанд в командах?

Оффлайн Artur_News

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Поиск в файле (grep)
« Ответ #4 : 05 Апреля 2016, 21:10:12 »
Спасибо, за совет. Попробую.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Поиск в файле (grep)
« Ответ #5 : 05 Апреля 2016, 21:14:23 »
На «5»-куgrep "0\(4-04\|8-01\)-2016 1[5-7]:.*Word" filename
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Artur_News

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Поиск в файле (grep)
« Ответ #6 : 05 Апреля 2016, 22:08:53 »
Не совсем то, что нужно.
grep "0\(4-04\|8-01\)-2016 1[5-7]:.*Word" filename будет искать в одинаковом часовом интервале в двух датах, необходимо как то это разделить, даже если я добавляю второй часовой отрезок, то все равно поиск часовых и минутных интервалах идет в обоих датах.
Выражение:
grep "0\(4-04 1[5-7]:\|8-01 10:1[5-7]:\)-2016:.*Word" filename тоже не выдает необходимо результата.

Пользователь добавил сообщение 06 Апреля 2016, 10:21:10:
Решено:
grep -E "(04-04-2016 1[5-7]:|08-01-2016 10:1[5-7])"  /filename | grep "Word"

Всем спасибо за помощь.
« Последнее редактирование: 06 Апреля 2016, 10:22:51 от Artur_News »

 

Страница сгенерирована за 0.043 секунд. Запросов: 23.