![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| Suppir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
Необходимо прочитать 30-Мб файл в переменную и сделать в переменной мультистрочный поиск. Пишу:
Поиск в одной строке работает, а мультистрочный поиск - нет. Т.е. символ "." в сочетании с модификатором /s не дает совпадения с \n. зы. хочу поймать такие строки: !КОМАНДА текст текст текст текст текст текст текст текст текст текст текст текст Т.е. если строка начинается на "!", то нужно печатать все до тех пор, пока не будет полностью пустая строка (^\s*$). Это сообщение отредактировал(а) Suppir - 28.2.2011, 14:57 |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
perl -0777 -lne 'm#^(!.+?)\n\n#sm && print $1'
|
|||
|
||||
| powerfox |
|
||||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: нет Всего: 97 |
Ваш код не соответствует описанию. Вы читаете построчно. |
||||
|
|||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
perl -0000 -lne 'm#^(!.+)#sm && print $1' -- чтобы тратить меньше памяти
|
|||
|
||||
| Suppir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
powerfox,
нужен именно мультистрочный поиск, потому там много чего нужно искать, куча паттернов. arto, не могу понять, как ваш код записать в привычном виде (не в одну строку). Можно ли аналогичный пример (с мультистрочным поиском), но в привычном виде? |
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
если нужна скорость, то не поробовать ли sysopen sysread sysseek ?
|
|||
|
||||
| powerfox |
|
||||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: нет Всего: 97 |
Это сообщение отредактировал(а) powerfox - 28.2.2011, 17:06 |
||||
|
|||||
| Suppir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
powerfox,
Спасибо. Я пробовал склеивать строки аналогичным образом - получается очень медленно. Нужно много раз пропарсить 1 Гб текста (30 файлов по 30 Мб). Если есть более быстрый способ, чем склеивание строк, то буду благодарен. |
|||
|
||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: нет Всего: 97 |
||||
|
||||
| Suppir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
powerfox,
имею в виду при тестировании |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
читайте сразу весь файл.
либо по логическим частям. |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |