20 / 9 / 3
Регистрация: 02.04.2015
Сообщений: 646
|
|
1 | |
Массовая замена слов25.03.2020, 12:24. Показов 3596. Ответов 22
Метки нет (Все метки)
Приветствую господа!
Скажите может у кого есть программа на c++ под такую задачу, есть много файлов с расхирением .php (1.php, 3.php, 7.php и так далее) именно в них мне нужно произвести замену слов и кусков текста из строки. к примеру в вашей программе будет два поля (1. что заменить 2. на что заменить) в поле 1. что заменить, я указываю каждую замену с новой строки (вот так). меняю это слово или фразу апбрсч кееусм екнн смиса авпвке апр ____________________________ 2. на что заменить, я указываю на что заменяю с новой строки (вот так). меняю на это слово или фразу апбрсч кееусм екнн смиса авпвке апр Помогите, может есть у кого-то схожая программа, а то в нотепаде++ все это тоже можно сделать, но там тольно за раз могу сделать замену только одного слова изи фразы на другое слово или фразу, а мне очень нужно пакетное решение так как слов много к замене. Может можно в нотепаде++ или другой программе все это сделать подскажите тогда как или названия программ, спасибо.
0
|
25.03.2020, 12:24 | |
Ответы с готовыми решениями:
22
Массовая замена слов, не Ctrl+H Массовая замена слов в документе из списка Массовая замена слов в файлах .txt BAT файлом Массовая замена |
20 / 9 / 3
Регистрация: 02.04.2015
Сообщений: 646
|
|
25.03.2020, 15:37 [ТС] | 3 |
Вы не внимательно прочитали, про нотепад я знаю уже 15 лет и все что вы показали, а у меня вопрос в том чтобы за один прогон заменить несколько сотен разных слов (что заменить и на что заменяю), в этих файлах php, а в нотепаде можно за один прогон по всем файлам заменить только одно слово на другое, а у меня их сотня!
в этом вся и сложность.
0
|
фрилансер
5499 / 5095 / 1047
Регистрация: 11.10.2019
Сообщений: 13,346
|
|
26.03.2020, 07:44 | 4 |
serauto79, если замены должны идти не по очереди, то для каждого очередного поиска (с текущей позиции) придётся:
1) искать все варианты заменяемого 2) выбирать из найденного тот, который встретился раньше 3) заменять 4) новая позиция - сразу после вставленной замены 5) идём в пункт 1 для пункта 1 возмОжна оптимизация: в пункте 4 не забывать найденные элементы, расположенные далее, чтобы не искать их заново
0
|
20 / 9 / 3
Регистрация: 02.04.2015
Сообщений: 646
|
|
26.03.2020, 10:16 [ТС] | 5 |
Замены будут иди по очереди!
Смотрите на (примере) в программе есть 2 колонки 1. что заменить 2. на что заменяет в первой колонке (1. что заменить) я указываю замены, каждая замена с новой строки... замена 1 замена 2 замена 3 замена 4 во второй колонке (2. на что заменяет) я указываю на что заменить, каждая замена с новой строки... на что заменить 1 на что заменить 2 на что заменить 3 на что заменить 4 Количество строк будет всегда равное в обеих колонках, в данном примере 4 строки. ну а в самой программе выбираю все .php файлы по которым нужно прогнать эти замены. Добавлено через 1 минуту Так-что если кто в курсе есть ли в природе такая программа маякните пожалуйста.
0
|
Just Do It!
|
||||||
27.03.2020, 12:37 | 6 | |||||
serauto79,
без особых усилий с минимум функционала: Исходник
Внимание: Замена ПОЛНЫХ строк в файла на соответствующие им из my.cfg Архив с ексешником и тестовыми файлами:
0
|
Just Do It!
|
|
27.03.2020, 13:02 | 7 |
это предстоит добавить.
можно по списку, а можно все файлы в директории(рекурсивно или без) по маске. Добавлено через 9 минут зы: сори, там в архиве лежит 1.php уже после теста, то есть замены там уже все сделаны. вам придётся самим вдумчиво сделать свой тест: написать файл назначения и сконфигурировать заменяемые строки.
0
|
1550 / 875 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
|
27.03.2020, 16:25 | 9 |
Куча пхп файлов наталкивает на мысль, что там линух. Тогда на хрена изобретать велосипед? Есть sed.
0
|
1550 / 875 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
|
27.03.2020, 16:48 | 11 |
Нормальные программисты после постановки задачи ищут существующие решения.
А самолет изобретать точно не надо. Велосипед хотя бы при использовании относительно безопасен, в отличие от.
0
|
20 / 9 / 3
Регистрация: 02.04.2015
Сообщений: 646
|
|
27.03.2020, 22:07 [ТС] | 12 |
Спасибо XLAT, можно правку внести в исходник
чтобы проход был по маске .php Чтобы не перечислять названия файлов (это не нужно!) 1.[FILES] <- Сначала перечисляются имена редактируемых файлов. Я так понимаю, если в директории с программой и конфигами будут находится другие директории а в них файлы .php по которым нужно прогнать замены все должно работать? Добавлено через 11 минут И как по маске прогнать (.php) Добавлено через 3 минуты ну и чтобы в подкаталогах делало замены тоже, спасибо большое!
1
|
20 / 9 / 3
Регистрация: 02.04.2015
Сообщений: 646
|
|
28.03.2020, 14:49 [ТС] | 14 |
Теперь все работает как нужно, спасибо большое!
Добавлено через 8 минут Сечас три замены, но работает медленно, а у меня будет список в 200 замен, и прогнать по всем файлам их тоже много, наверное несколько часов займет? Добавлено через 1 минуту но всеровно, спасибо, в любом случае проганять замены через нотепад достаточно муторно. Добавлено через 4 минуты Да видно я поспешил с выводами о работе проги, она не работает, сейчас прогнал по всем файлам что у меня есть три замены, так эти файлы до замены весили по 20-30 килобайт, после обработки стали весить по 25 мегобайт, это прикол такой? Добавлено через 8 минут при большом количестве файлов даже 100шт, программа начинает считывать и записывать данные что в файле по несколько десятков или сотен раз, пологаю что это число равно кол. файлов например была страница пхп с кодом прапра апрапрап ропропр апрарапр это замена----------------------- апрапрап ллрлорлолр апрарарапр ролрл то готовый результат после обработки будет у меня такой прапра апрапрап ропропр апрарапр тут заменил----------------------- апрапрап ллрлорлолр апрарарапр ролрл прапра апрапрап ропропр апрарапр тут заменил----------------------- апрапрап ллрлорлолр апрарарапр ролрл прапра апрапрап ропропр апрарапр тут заменил----------------------- апрапрап ллрлорлолр апрарарапр ролрл прапра апрапрап ропропр апрарапр тут заменил----------------------- апрапрап ллрлорлолр апрарарапр ролрл прапра апрапрап ропропр апрарапр тут заменил----------------------- апрапрап ллрлорлолр апрарарапр ролрл прапра апрапрап ропропр апрарапр тут заменил----------------------- апрапрап ллрлорлолр апрарарапр ролрл прапра апрапрап ропропр апрарапр тут заменил----------------------- апрапрап ллрлорлолр апрарарапр ролрл прапра апрапрап ропропр апрарапр тут заменил----------------------- апрапрап ллрлорлолр апрарарапр ролрл прапра апрапрап ропропр апрарапр тут заменил----------------------- апрапрап ллрлорлолр апрарарапр ролрл прапра апрапрап ропропр апрарапр тут заменил----------------------- апрапрап ллрлорлолр апрарарапр ролрл прапра апрапрап ропропр апрарапр тут заменил----------------------- апрапрап ллрлорлолр апрарарапр ролрл прапра апрапрап ропропр апрарапр тут заменил----------------------- апрапрап ллрлорлолр апрарарапр ролрл прапра апрапрап ропропр апрарапр тут заменил----------------------- апрапрап ллрлорлолр апрарарапр ролрл прапра апрапрап ропропр апрарапр тут заменил----------------------- апрапрап ллрлорлолр апрарарапр ролрл прапра апрапрап ропропр апрарапр тут заменил----------------------- апрапрап ллрлорлолр апрарарапр ролрл прапра апрапрап ропропр апрарапр тут заменил----------------------- апрапрап ллрлорлолр апрарарапр ролрл прапра апрапрап ропропр апрарапр тут заменил----------------------- апрапрап ллрлорлолр апрарарапр ролрл прапра апрапрап ропропр апрарапр тут заменил----------------------- апрапрап ллрлорлолр апрарарапр ролрл прапра апрапрап ропропр апрарапр тут заменил----------------------- апрапрап ллрлорлолр апрарарапр ролрл прапра апрапрап ропропр апрарапр тут заменил----------------------- апрапрап ллрлорлолр апрарарапр ролрл прапра апрапрап ропропр апрарапр тут заменил----------------------- апрапрап ллрлорлолр апрарарапр ролрл прапра апрапрап ропропр апрарапр тут заменил----------------------- апрапрап ллрлорлолр апрарарапр ролрл и так у меня выходило с 20 килобайт до 25 мегабайт, там видать серьезно умножало на ноль
1
|
Just Do It!
|
|
28.03.2020, 15:33 | 15 |
serauto79, спасибо.
да нашёл быстро, был глупейший баг, связанный с грязным контейнером для анализа следующего файла. Нужно его чистить каждый раз. Это от того, что на тест я потратил мало времени. На счёт оптимизаций по времени, кое-что можно сделать, но опять нужно расщедрится временем на тестирование!
0
|
Just Do It!
|
|
28.03.2020, 16:20 | 16 |
serauto79, исправил этот баг.
Заодно добавил поиск по маске. Поддерживаются '?' и '*'. Читайте инструкцию в Readme.txt Напоминаю, что менять можно не только построчно, но и посимвольно в пределах одной строки. Тестите и пишите исчо баг-репоты - буду исправлять.
0
|
Just Do It!
|
|
28.03.2020, 18:09 | 17 |
Сообщение было отмечено serauto79 как решение
Решение
по поводу кодировок файла конфига и исходников для замены:
Общая кодировка UTF-8. Если кодировка будет другая, то возможны траблы. Соответственно поправленная версия с учетом такого договора:
1
|
20 / 9 / 3
Регистрация: 02.04.2015
Сообщений: 646
|
|
28.03.2020, 19:35 [ТС] | 18 |
ОК, а то я тут с примерами был запилил чтобы показать как работало.
1
|
20 / 9 / 3
Регистрация: 02.04.2015
Сообщений: 646
|
|
28.03.2020, 20:31 [ТС] | 19 |
Спасибо, теперь все четенько!
1
|
Just Do It!
|
|
28.03.2020, 21:13 | 20 |
serauto79,
Вот тут по оптимизации я чуть-чуть поправил, насколько хорошо, хз. Конкретно сделал: 1. в одном месте поменял вектор на лист. 2. зарезервировал под буфера больше места. это должно помогать избегать временные задержки на перелокацию памяти. разумеется это мелочь, но всё же профит должен быть.
0
|
28.03.2020, 21:13 | |
28.03.2020, 21:13 | |
Помогаю со студенческими работами здесь
20
Notepad++ массовая замена Массовая замена формул Массовая замена сылок в БД Массовая замена записей Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |