powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Навороченый grep
4 сообщений из 4, страница 1 из 1
Навороченый grep
    #37559041
Фотография evgeny12000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача искать строки в которых присутствует одно из ключевых слов (их может быть около 100), а также игнорировать строки в которых присутствует одно из ключевых слов (их тоже может быть около 100).
Главная цель, чтоб это работало оптимально быстро.

Вот вариант который получилось сделать. Но у него есть недостаток, есть ограничение на длину внутренних файлов (search_words.txt и exclude_words.txt)

egrep -r `cat search_words.txt` * | egrep -v `cat exclude_words.txt`

search_words.txt - mama|papa|deda|baba
exclude_words.txt - sin|vnuk|brat|sestra

Есть другие идеи ? Может эффективней делать perlom ?
...
Рейтинг: 0 / 0
Навороченый grep
    #37559118
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 12/05/2011 01:34 PM, evgeny12000 wrote:

> Вот вариант который получилось сделать. Но у него есть недостаток, есть
> ограничение на длину внутренних файлов (search_words.txt и exclude_words.txt)
>
> egrep -r `cat search_words.txt` * | egrep -v `cat exclude_words.txt`
>
> search_words.txt - mama|papa|deda|baba
> exclude_words.txt - sin|vnuk|brat|sestra
>
> Есть другие идеи ?

Ну самое эффективное -- читать одну строку исходного файла один раз.
Эффективнее уже некуда -- лучше только в БД или ещё куда загружать и индексы
строить, это будет логарифмы (может быть).

Можно оба действия сделать в одном рег.выражении, но только
толку мало -- всё равно строка только один раз читаться будет.
И я не знаю, как и можно ли это сделать с egrep, у него там
свои регвыражения.

Может эффективней делать perlom ?

Можно и седом.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Навороченый grep
    #37559209
Фотография evgeny12000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivOn 12/05/2011 01:34 PM, evgeny12000 wrote:

> Вот вариант который получилось сделать. Но у него есть недостаток, есть
> ограничение на длину внутренних файлов (search_words.txt и exclude_words.txt)
>
> egrep -r `cat search_words.txt` * | egrep -v `cat exclude_words.txt`
>
> search_words.txt - mama|papa|deda|baba
> exclude_words.txt - sin|vnuk|brat|sestra
>
> Есть другие идеи ?

Ну самое эффективное -- читать одну строку исходного файла один раз.
Эффективнее уже некуда -- лучше только в БД или ещё куда загружать и индексы
строить, это будет логарифмы (может быть).

Можно оба действия сделать в одном рег.выражении, но только
толку мало -- всё равно строка только один раз читаться будет.
И я не знаю, как и можно ли это сделать с egrep, у него там
свои регвыражения.

Может эффективней делать perlom ?

Можно и седом.


Да, согласен с вами.
Покажите конкретные примеры, и ещё важен нюанс большое количество ключевых слов.
...
Рейтинг: 0 / 0
Навороченый grep
    #37559362
user123456789user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
evgeny12000,

может как-нибудь так:

Код: plaintext
cat * | grep --fixed-strings --file search_words.txt | grep --fixed-strings --file exclude_words.txt --invert-match

где search_words.txt содержит:
Код: plaintext
1.
2.
3.
mama
papa
deda
baba

, а exclude_words.txt содержит:
Код: plaintext
1.
2.
3.
sin
vnuk
brat
sestra
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Навороченый grep
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]