Выпущена новая версия программы nhrt v2.11.0.
Новые возможности
- Новые параметры для вставки текста перед найденными вхождениями или после них
Загрузка и установка
- загрузка nhrt
- содержит бинарные файлы, требуется установка вручную
Вставка текста перед найденными вхождениями или после них
Начиная с этой версии, программа выполняет не только замену, но и вставку текста.
Возможности вставки предназначены для внесения изменений в файлы исходников, например, php файлов WordPress, которые с каждой версией обновляются и требуется повторного внесения ранее сделанных частных изменений.
Внесение изменений, а именно вставку текста в определённое место файла, т.е. с привязкой к существующему фрагменту кода, можно выполнить и в предыдущей версии nhrt, но это требует дополнительных действий – придется вставлять искомый текст в заменяющий текст, а для регулярных выражений использовать форматированный текст (capture groups и formatted text).
Новые параметры позволяют вставлять текст проще, без этих ухищрений.
Новый параметр -insert_before вставляет заданный текст перед найденным текстом, а новый параметр -insert_after вставляет заданный текст после найденного текста.
Следующий пример увеличивает интервал автосохранения, вставляя строку define( 'AUTOSAVE_INTERVAL' , 3600 );
перед комментарием /* Это всё, дальше не редактируем. Успехов! */
в файле wp-config.php:
nhrt.exe -insert_before -spt:"/* Это всё, дальше не редактируем. Успехов! */" -et:"define( 'AUTOSAVE_INTERVAL' , 3600 );\n\n" wp-config.php
Используя регулярное выражение, можно сократить строку поиска:
nhrt.exe -insert_before -sre:"^.*дальше не редактируем" -et:"define( 'AUTOSAVE_INTERVAL' , 3600 );\n\n" wp-config.php
Этот пример вставляет содержимое файла myfile.txt перед закрывающим тегом в файле footer.php:
nhrt.exe -insert_before -spt:"</body>" -f:myfile.txt footer.php
Используя новые параметры, можно составить командный файл, который будет вставлять фрагмента кода в определённые места файлов. Тогда при обновлении файлов (при выходе новой версии wp) достаточно будет запустить этот bat файл, чтобы повторно вставить дополнения кода.
А как в начало или конец документа что-то вставить? Типа:
-ib -sre:"^" -et:"строка\n" File.txt
-ia -sre:"$" -et:"\nстрока" File.txt
-ib -sre:"^[\s.]" -et:"строка\n" File.txt
-ia -sre:"[\s.]$" -et:"\nстрока" File.txt
Или куда-то единоразово? Т.е. с отключением глобальной отработки? Такого ключа не предусмотрели?
вставка текста в начало или конец файла запланирована на следующую версию. в последующих версиях будет вставка текста в фиксированное место файла по номеру строки и позиции в строке
Хорошо.
Насчёт последующих версий. Номер строки-то, как правило, неизвестен. Нужно именно находить первое вхождение и править. В т. ч. с конца при использовании look-behind шаблона (?<=…).
Если по номеру вхождения более востребовано, чем по номеру строки, тогда в первую очередь сделаю по номеру вхождения.
Выбирать номер вхождения — это хорошо. А что насчёт номера с конца?
будет нумерация и с начала, и с конца.
можно будет задать, например, замену первого и последнего вхождений. или третьего с начала и второго с конца. и тому подобное.
Отлично! По номеру строки тоже сделайте. Пусть реже, но иногда востребовано.
https://nhutils.ru/blog/nhrt-v2-12-0/