grep поиск по регулярным выражениям

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

sedikpoll
Сообщения: 100

grep поиск по регулярным выражениям

Сообщение sedikpoll »

Есть текстовые файлы в которых следует найти строки содержащие слова:
abc(
qwe(
abc_a(
qwe_a(

Конечно можно сделать так
grep -R -E "(abc\(|abc_a\(|qwe\(|qwe_a\(" *

но нельзя ли это сократить? (чувствую что можно)

Думал что так:
(abc\(|qwe\()_a\(

но тогда он ищет
abc(__a(
Спасибо сказали:
Аватара пользователя
Babusha
Сообщения: 203
ОС: Убунту

Re: grep поиск по регулярным выражениям

Сообщение Babusha »

Если работает, не трогай!
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: grep поиск по регулярным выражениям

Сообщение sash-kan »

grep -RE "(abc|qwe)(|_a)\(" *
короче вряд ли выйдет с сохранением функциональности.

sedikpoll писал(а):
02.01.2011 23:39
но тогда он ищет
abc(__a(
часть "abc(" ведь полностью совпадает с первой строкой из примера.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: grep поиск по регулярным выражениям

Сообщение drBatty »

sash-kan писал(а):
02.01.2011 23:57
grep -RE "(abc|qwe)(|_a)\(" *

ИМХО более правильнее использовать (_a)? вместо (|_a)
хотя ваш вариант конечно тоже допустим.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
sedikpoll
Сообщения: 100

Re: grep поиск по регулярным выражениям

Сообщение sedikpoll »

Корректно ли искать

Код: Выделить всё

abc_1234
qwe_1234
1234

При помощи "(abc_|qwe_)?(1234)"?
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: grep поиск по регулярным выражениям

Сообщение t.t »

Вторые скобки лишние.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: grep поиск по регулярным выражениям

Сообщение drBatty »

sedikpoll писал(а):
03.01.2011 17:21
При помощи "(abc_|qwe_)?(1234)"?

нормально. вторые скобки нужны лишь в sed-скрипте, который что-то заменяет:

Код: Выделить всё

s/(abc_|qwe_)?([0-9]*)/\1 --- \2/

или при поиске одинаковых последовательностей:

Код: Выделить всё

\<(\w)\>.*\<\1\>

найдутся строчки, в которых есть одинаковые слова.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: grep поиск по регулярным выражениям

Сообщение Portnov »

man grep:

Код: Выделить всё

       -f FILE, --file=FILE
              Obtain  patterns  from  FILE,  one  per  line.   The empty file contains zero patterns, and therefore matches
              nothing.  (-f is specified by POSIX.)


Ы?
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: grep поиск по регулярным выражениям

Сообщение KiWi »

Portnov писал(а):
05.01.2011 18:03
man grep:

Код: Выделить всё

       -f FILE, --file=FILE
              Obtain  patterns  from  FILE,  one  per  line.   The empty file contains zero patterns, and therefore matches
              nothing.  (-f is specified by POSIX.)


Ы?

Ещё и -F к этому -- и вообще сказка)
Спасибо сказали: