Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Грепоизвращение

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix
Предыдущая тема :: Следующая тема  
Автор Сообщение
Бука
Гость





СообщениеДобавлено: Пт Май 07 2004 09:36    Заголовок сообщения: Грепоизвращение Ответить с цитатой

Задачка:
имеется логфайл, в нем ессно строки разные
Требуется - парсить данный файл, выдирая из него либо строки со словом "abc" либо со словом "def", полностью игнорируя остальное.

Хочу сделать грепом, теоретически должно работать. Кто-нить делал, получалось?

awk, perl, c++ и так далее в данном случае не рассматриваются...
Вернуться к началу
ryabinkin



Зарегистрирован: 01.12.2003
Сообщения: 152
Откуда: Moscow

СообщениеДобавлено: Пт Май 07 2004 22:00    Заголовок сообщения: Ответить с цитатой

grep -E '\<(abc|def)\>' имя файла

Работает, если в строке есть _слово_ "abc" или "def", то есть сущность, отделенная от других символов любым разделителем (неалфавитным символом) и не содержащаяя их в себе.
_________________
Из двух спорящих виноват тот, кто умнее.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Dmitry.Karpov



Зарегистрирован: 30.11.2003
Сообщения: 415
Откуда: Moscow

СообщениеДобавлено: Сб Май 08 2004 09:21    Заголовок сообщения: Re: Грепоизвращение Ответить с цитатой

grep '\(abc\|def\)'

Бэкслешами экранируются скобки и пайп для того, чтобы grep (точнее, библиотека рег.выражений) толковала их как спец.символы. Можно и три слова:

grep '\(abc\|def\|ghi\)'
_________________
Благословен Бог, сотворивший меня сисадмином!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
ryabinkin



Зарегистрирован: 01.12.2003
Сообщения: 152
Откуда: Moscow

СообщениеДобавлено: Сб Май 08 2004 13:08    Заголовок сообщения: Дмитрий, позвольте с Вами не согласиться... Ответить с цитатой

Приведенное вами регулярное выражение найдет совпадение даже в слове
xxxabcxxx,
что, как я понял из условия задачи, неприемлемо.

2All
Обратите, пожалуйста, внимание на различия в наших с Дмитрием решениях.
Мое решение использует т.н. (в терминологии программы grep) extended regular expression (специальный ключ -E, можно также вызывать командой egrep), а решение Дмитрия - basic regular expression.
Различия в них - форма скобок в конструкции выбора - неэкранированные ")" или экранированные "\)" и сама конструкция выбора - "|" или "\|"
Кроме того, в extended regular expression поддерживаются метасимволы границ слов "\<" и "\>"
_________________
Из двух спорящих виноват тот, кто умнее.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Dmitry.Karpov



Зарегистрирован: 30.11.2003
Сообщения: 415
Откуда: Moscow

СообщениеДобавлено: Сб Май 08 2004 22:57    Заголовок сообщения: Позволяю :-) Ответить с цитатой

ryabinkin писал(а):
Приведенное вами регулярное выражение найдет совпадение даже в слове
xxxabcxxx,
что, как я понял из условия задачи, неприемлемо.

А вот это вопрос к автору ветки, что он подразумевает под "словом".

ryabinkin писал(а):
2All
Обратите, пожалуйста, внимание на различия в наших с Дмитрием решениях.
Мое решение использует т.н. (в терминологии программы grep) extended regular expression (специальный ключ -E, можно также вызывать командой egrep), а решение Дмитрия - basic regular expression.
Различия в них - форма скобок в конструкции выбора - неэкранированные ")" или экранированные "\)" и сама конструкция выбора - "|" или "\|"
Кроме того, в extended regular expression поддерживаются метасимволы границ слов "\<" и "\>"

Конечно, extended regular expression более продвинутое, и в большинстве программ (таких как Squid) используется именно ext.regex. Но и моё решение нормально сработает. Собственно, я написАл его для демонстрации того, что можно искать любое количество слов.
_________________
Благословен Бог, сотворивший меня сисадмином!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...