С кириллицей (по крайней мере в UTF-8) это не прокатывает. Для латиницы и -w нормально работает, и метасимвол \b можно использовать для поиска границы слова.
Решено: обработка большого текстового файла
Модератор: Bizdelnick
-
- Модератор
- Сообщения: 21257
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Решено: обработка большого текстового файла
С кириллицей (по крайней мере в UTF-8) это не прокатывает. Для латиницы и -w нормально работает, и метасимвол \b можно использовать для поиска границы слова.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
-
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: Решено: обработка большого текстового файла
Согласен, grep быстрее, но всё же на больших файлах у меня бывало довольно медленно.
Думаете, я об этом не знаю? Знаю.
Просто tail выдаёт определенное количество строк, а мне бывает нужно перемещаться по файлу вверх-вниз на произвольное расстояние.
Кстати вот это
возможно из-за терминала. Я нажимал клавишу End, чтобы перейти в конец, и она похоже, не срабатывает.Hephaestus писал(а): ↑02.10.2014 16:51Попробовал перенаправить на вход less и перейти в конец - не смог, зависает.
Так что, возможно, это не зависание, а просто ничего не происходит.
С учетом вот этих Ваших результатов
С БД можно не заморачиваться. Хороший результат. Просто отличный.
Ах, всё-таки медленно. Я так и думал.azsx писал(а): ↑02.10.2014 19:03работает медленно, но у них есть чит - файлы разделены по языкам откуда собрали данные. Только вот при проектировании титлов интернет магазинов для буржуев приходится использовать всю бд. Но вообще бд пастухова работает более чем медлено в родной оболочке даже при выборке только ру кеев.
Имею опыт общения с базами ПС Гарант.
Причём в динамике. Сначала база весила менее 4Гб и распространялась на DVD (портативная версия).
Потом база разрослась где-то до 8-10-12Гб и на диск уже не влезала. Предлагали флешку.
Потом она была уже 14Гб, а под конец около 30Гб. Так вот там обновление базы происходило часа полтора-два.
Но сам поиск работал быстро - там бинарный формат и индексы. Как оно крутилось бы без индексов - даже не знаю.
По регулярным выражениям есть целая книга. Если денег не жалко, присмотритесь.
Припоминаю, что grep умеет брать ключи поиска из файла. Параметр -f, если не ошибаюсь.
Спасибо сказали:
-
- Модератор
- Сообщения: 21257
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Решено: обработка большого текстового файла
Hephaestus писал(а): ↑03.10.2014 15:56Просто tail выдаёт определенное количество строк, а мне бывает нужно перемещаться по файлу вверх-вниз на произвольное расстояние.
Что, и tail -n1000 file.log | less не хватит?
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
-
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: Решено: обработка большого текстового файла
Мне было проще сделать cat file.log | less, а дальше использовать поиск и свободное перемещение по файлу.
И не думать о том, сколько вывести строк и попадут ли в выборку нужные мне строки.
Спасибо сказали:
-
- Сообщения: 3684
- ОС: calculate linux, debian, ubuntu
Re: Решено: обработка большого текстового файла
Как оно крутилось бы без индексов - даже не знаю.
я зато в теории легко бы решил этот вопрос, при этом индексы будут маленькими. Просто надо разделить лексические единицы (слова) на шинглы и живой поиск делать именно по ним. При этом будет 2 этапа: 1. получить данные; 2. отранжировать их согласно алгоритму.
уметь бы...
-
- Модератор
- Сообщения: 21257
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Решено: обработка большого текстового файла
Hephaestus писал(а): ↑03.10.2014 17:08Мне было проще сделать cat file.log | less, а дальше использовать поиск и свободное перемещение по файлу.
И не думать о том, сколько вывести строк и попадут ли в выборку нужные мне строки.
Оно всегда проще. Когда работает. (-:
Я бы в таком случае сначала грепнул, чтобы выяснить номера нужных строк, а потом уже tail | less.
Кстати, зачем тут cat? Он ведь тоже память потребляет, хоть и немного.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
-
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: Решено: обработка большого текстового файла
Привычка. Одно время пользовался less file.ext, но некоторые файлы less считывал некорректно (что-то там насчет типов файла и подсветки синтаксиса), случалось это всякий раз некстати - некогда было разбираться, наиболее простой вариант был - считывать с помощью cat. Потом уже сразу стал использовать cat. С тех пор и пользуюсь.Bizdelnick писал(а): ↑03.10.2014 17:24Кстати, зачем тут cat? Он ведь тоже память потребляет, хоть и немного.
-
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: Решено: обработка большого текстового файла
Я имел в виду конкретную базу - ПС Гарант.
Она явно не была рассчитана на те объемы, которых достигла за довольно короткое время (год-два).
Оффтоп
Spoiler
База разрослась, но схема обновления (пополнения баз) не изменилась.
Как-то раз я наблюдал за процессом (следил за изменением файлов).
База состояла из нескольких больших (по 2Гб) файлов, а обновления были в виде маленьких архивов (они назывались дельты). Схема была такая: открываем первый большой файл, прикручиваем к нему первую дельту, открываем второй большой файл, прикручиваем к нему первую дельту и т.д. Потом опять открываем первый большой файл, прикручиваем вторую дельту и т.д. То есть каждый большой файл открывался столько раз, сколько дельт было в архиве (а их могло быть штук десять). Хотя логичнее было сделать наоборот: открыть большой файл, прикрутить к нему все дельты, закрыть и больше не трогать. Потом второй и т.д.
Пока база была небольшого размера, разница была незаметна. По мере разрастания базы это стало занимать много времени, особенно если машина не самая быстрая (рекомендовали даже оставлять на ночь).
Спасибо сказали: