Форум сайта python.su
FishHookАга и как все что делают в микрософте оно для домохозяек и в реальной работе не годится.
Даааавно уже есть
FINDSTR: Слишком длинная строка 6. FINDSTR: Слишком длинная строка 15. FINDSTR: Слишком длинная строка 15. FINDSTR: Слишком длинная строка 15. ....
Офлайн
doza_and
Ну а если я сейчас покажу в таком же виде, что все ищется без проблем, то нам останется только письками мериться, да?
Офлайн
> ЗЫ. что удивительно: когда изменил размер куска с мегабайта на 32 Мб, то процесс шел медленней.
Нет в этом ничего удивительного. Регулярки ресурсоёмки и работают довольно медленно.
P.S. Желательно что-бы размер “куска” был кратен размеру блока ФС, тогда “кусок” будет читаться более быстро. Хотя в твоём случае это скорости не добавит.
Офлайн
FishHookСтранно что вы это так воспринимаете.
то нам останется только письками мериться
FishHookНу в таком виде не надо. По уму надо привести командную строку (findstr “hello there” a.txt), загрузить файл на котором получено такое сообщение (в моем случае это 20GB). Но честно говоря поленился это делать. grep отработал на том-же файле без проблем.
Ну а если я сейчас покажу в таком же виде
Отредактировано doza_and (Дек. 18, 2016 15:37:29)
Офлайн
doza_and
Это я к тому, что когда речь идет о никсах, то обычно в сторону неудачного опыта летят обвинения в криворукости и неосиляторстве, а когда о виндах, то крайней остается винда. Это двойные стандарты и предвзятость в чистом виде. Обычно, холивары линух vs винда разводят пионеры в вечном стремлении померяться писюнами. Не думаю, что вам подобное мероприятие было бы интересно. Вопрос от топикстартера был “Ну и где такое в винде?”. Он получил ответ, пусть думает, что с этим делать, ведь не я же ему навязывал винду в качестве целевой оси, правда?
Офлайн
doza_and
семантических границ
py.user.next
разбиение на огороженные части и только потом в них ищется то, что надо.
FishHook
не я же ему навязывал винду в качестве целевой оси, правда?
Отредактировано Iskatel (Дек. 18, 2016 16:30:18)
Офлайн
FishHookБез обид. Натравить регулярку на длинную последовательность данных иногда бывает полезно, по этому я сразу попробовал его в деле. Согласен, инструмент есть. но у него есть и особенности которые я описал
Он получил ответ, пусть думает
IskatelНу не совсем. Но знание формата файла обязательно.
Напоминает “у попа была собака”…
IskatelДумается что это грозит написанием специального варианта библиотеки для ограниченных регулярных выражений, которая позволит обрабатывать поток данных. Может ошибаюсь но похоже flex/flex++ реализуют такой вариант. можно попробовать оттуда вытащить.
И вообще хотелось бы универсальный вариант
Офлайн
doza_and
Ну не совсем. Но знание формата файла обязательно.
Отредактировано Iskatel (Дек. 18, 2016 17:58:57)
Офлайн
IskatelТвоя программа должна разделить на лету перед поиском. То есть программа начинает читать по блокам или по строкам и накапливает их до тех пор, пока в накопленном блоке на границе не будет двусмысленных данных. И этот накопленный блок находится в оперативной памяти (он небольшой). Потом он склеивается внутри в текст и в нём выполняется поиск. Потом он выкидывается из памяти и туда начинает накапливаться следующий блок точно таким же образом. Таким образом у тебя всё время занято немного памяти и поиск ведётся по всему файлу. Это типа смещающегося окна, про которое ты говорил, но в окне поиск выполняется и по тем данным, по которым ты уже искал, а в блоках поиск выполняется только по новым данным.
Файлы пишет не моя прога, разделение “в процессе” невозможно.
IskatelЭто больше похоже на то, что ты не знаешь, что такое битность системы. К размеру файлов она никак не относится.
Идея интересная, но: если уже есть файл, то границу там можно найти опять таки поиском… по большому файлу… в 32 системе…
Отредактировано py.user.next (Дек. 19, 2016 03:29:34)
Офлайн
py.user.next
и что это значит? что оно должно совпасть со всеми гигабайтами файла?
py.user.next
То есть программа начинает читать по блокам или по строкам и накапливает их до тех пор, пока в накопленном блоке на границе…
Офлайн