Бесплатная программа nhrt (nhutils replace text, ранее называлась nhreplace) заменяет текст в файлах или в потоке stdin.

Возможности

  • Поиск обычного текста (plain text), форматированного текста или регулярного выражения.
  • Текст для поиска задаётся в параметре командной строки или в текстовом файле
  • Заменяющий текст – обычный текст, форматированный текст или группы регулярного выражения
  • Заменяющий текст задаётся строкой или содержимым текстового файла
  • Обработка файлов по маске
  • Обработка подкаталогов
  • Пакетное выполнение нескольких команд поиска/замены за один проход.
  • Возможность вставки текста вместо замены.

Программа работает из командной строки Windows и может быть использована в пакетных файлах.

Оценки программы nhrt

Оценка пользователей freesoft.ru
nhrt

Кодировки текстовых файлов

Программа nhrt используется также для пакетной перекодировки текстовых файлов между различными кодировками, поддерживаются кодировки текстовых файлов:

  • ANSI (Windows-1251 для русской версии Windows),
  • OEM (CodePage 866 для русской версии Windows),
  • Unicode (UTF-16),
  • UTF-8,
  • кодировки, заданные номером, например, 1252 — западно-европейские языки (французский и др).

Преобразование кодировки может выполняться одновременно с заменой текста, например: считать файл в кодировке utf-8, выполнить замену текста, затем сохранить в кодировке Unicode. Также при замене текста на содержимое файла программа позволяет обрабатывать файлы в разных кодировках, например, одним действием вставить текст из файла с OEM кодировкой в файл с кодировкой Unicode.

Командные файлы и скрипты

Программа ориентирована на пакетное применение в командных CMD файлах, скриптах JScript/VBScript и других автоматических решениях:

  • программа не требует интерактивного ввода информации от пользователя
  • все режимы задаются через параметры командной строки
  • возможность обработки файлов по маске файлов с использованием символов подстановки ? и *
  • возможность обработки подкаталогов (recurse subdirectories)

Для программы оказывается техническая поддержка в виде открытого форума

Работа программы проверена в Windows XP, Windows Vista 32/64, Windows 7 32/64. Программа не требуется установки.

С версии nhrt v2.2 добавлена возможность преобразования кодировки между OEM и ANSI «на лету» преобразованием входного потока stdin, чтобы обеспечить совместную работу командных файлов (кодировка OEM/866) с программами, работающими в кодировке ANSI. Возможность реализована в виде отдельного исполняемого файла nhconv.exe (входит в загрузку nhreplace), например, следующая команда преобразует вывод dir в кодировку ANSI:
cmd /c dir | nhconv

Узнать больше о программе nhrt

Загрузка nhrt

Справка nhrt

Вопросы и ответы по nhrt

Примеры использования nhrt

Примеры применения программы nhrt: замена статическим текстом, замена файлом, командный файл для сборки html файлов из фрагментов.

Поиск регулярного выражения и замена статическим текстом

Замена дат 2000-2019 гг. на 01.03.2009 в *.txt и *.cmd файлах текущего каталога:

nhrt -sre:"[0-3]?[0-9]\.[0-1]?[0-9].20[0-1][0-9]" -t:"01.03.2009" *.txt *.cmd

Первый параметр задает регулярное выражение для поиска. Предполагается дата в формате d.M.yyyy.

Второй параметр задает статическую заменяющую строку.

Третий и четвертый параметры задают маски обрабатываемых файлов.

Поиск строки и замена содержимым файла

Замена строки ref1 на содержимое файла content1.txt во всех html файлах текущего каталога:

nhrt -s:"ref1" -f:content1.txt *.htm *.html

Первый параметр задает фиксированный текст ref1, подлежащий замене.

Второй параметр задает заменяющий файл content1.txt.

Третий параметр задает маску обрабатываемых файлов — все htm и html файлы текущего каталога.

nhrt: 24 комментария

  • 25.09.2019 в 05:43
    Постоянная ссылка

    Здравствуйте! Возможна ли пакетная замена многострочного блока в файлах?
    Допустим, есть несколько десятков страниц с одинаковым блоком «меню» (меню прописано не одним десятком строк).
    Нужно поменять меню во всех файлах.
    Возможно ли «скормить» программе файл с большим текстом, подлежащим замене, и второй файл — с текстом, который нужно вставить вместо.
    Вариант сборки файлов из html в данном случае не подходит, потому что нет маленькой строки-маркера, которую нужно найти и заменить на блок текста. Нужно заменить именно один блок текста на другой блок текста.

    Ответить
    • 25.09.2019 в 09:14
      Постоянная ссылка

      Здравствуйте, да, конечно!
      Файл с текстом для поиска задаётся через -spf, файл с замееняющим текстом через -f, файлы для обработки по маске.

      Ответить
    • 22.05.2019 в 20:14
      Постоянная ссылка

      назначение программы — заменять текст в существующих файлах. создание нового файла можно сделать, например, копированием в bat файле

      Ответить
  • 21.11.2018 в 17:57
    Постоянная ссылка

    Добрый день,
    прошу помочь с задачей:
    в html файле регуляка — href=»/resume/(.*?(\d{8}).html») находит все интересующие вхождения.
    Как реализовать поиск с последующей заменой всех вхождений только на цифровые значения с помощью nhutils, спасибо

    Ответить
    • 22.11.2018 в 21:52
      Постоянная ссылка

      Добрый день, не очень понял, что значит, с заменой только на цифровые значения? Вероятно, это про capture groups. Можете объяснить подробнее или написать пример, что на что должно заменяться?

      Ответить
  • 29.08.2018 в 12:58
    Постоянная ссылка

    привет… мне нужно сделать тысячи замен искомого на GUID-значение… вообще делаю замены с помощью nhrt, но сейчас нет в нем возможности генерации GUID-значений при замене… не сложно ли добавить такую возможность?

    перейдя с windows на linux, nhrt лучшее что работает на замену пакетным заменам по шаблону, которые я делал в AkelPad, ибо AkelPad в linux не заводится касательно работы скриптов…

    Ответить
    • 11.02.2017 в 08:48
      Постоянная ссылка

      Если вопрос в том, чтобы вставить в заменяемый текст перевод строки, то для этого лучше использовать параметр -escapetext (-et), который поддерживает символы \",\r,\n,\\,\xHH,\uHHHH для замены:

      -spt:"G01" -i -et:"G00\r\n"

      Если вопрос в чем-то другом, напишите подробнее.

      Ответить
      • 11.02.2017 в 14:51
        Постоянная ссылка

        Да. Вы меня правильно поняли. Всё работает. И ещё вопросик. Есть набор произвольных чисел, к примеру 1521, 2734, 152. Как сделать так что бы после единиц появилась точка ? То есть должно получится:
        152,1
        273,4
        15,2

        Ответить
          • 11.02.2017 в 21:06
            Постоянная ссылка

            Всё заработало. Спасибо вам огромное. И ещё возник вопрос. Есть огромное количество текста типа:
            N1
            N2
            N3
            N4

            N100
            Но по какой то причине запись типа:
            -sre:»N[0-999]» -t:»»
            удаляет только строки от N1 до N9, а N10 превращает в 0. Как это исправить ?

          • 11.02.2017 в 21:39
            Постоянная ссылка

            Квадратные скобки в регулярном выражении задают набор символов (а не диапазон чисел), поэтому ваше выражение задаёт выражение из одной цифры.
            Здесь нужно
            N\d+ – ненулевое число цифр или
            N\d{1,3} – от одной до трёх цифр.

  • 14.01.2017 в 18:31
    Постоянная ссылка

    Помогите пожалуйста разобраться с заменой по регулярному выражению
    Нужно найти все вхождения:
    Text1…неизвестное_количество_пробелов…Text2
    и заменить на:
    Text1_один_пробел_Text2

    Заранее благодарю!

    Ответить
    • 09.10.2016 в 21:08
      Постоянная ссылка

      В смысле «не работает в Windows XP SP2»? По тексту написано, что работа программы nhreplace проверена в нескольких версиях Windows, включая Windows XP.

      Ответить

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *