nhrt – консольная программа для замены текста в файлах и преобразования кодировок текстовых файлов.

Новая версия программы nhrt v2.14.0.

Файлы новой версии nhrt

Скачать новую версию программы можно по ссылке ниже.

nhrt binaries

Исполняемые файлы nhrt.exe, nhconv.exe. Требуется установка файлов вручную. Работает в Microsoft Windows XP SP3 и старше. ZIP 367 кБ

Предыдущие версии nhrt (nhreplace)

Архивные версии

Узнать больше

Описание nhrt

Справка по nhrt

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

Загрузка nhrt: 6 комментариев

  • 08.05.2019 в 06:55
    Постоянная ссылка

    nhutils, спасибо!

    вместо регулярного выражения
    -sre:"Первый канал \(\+1\)"
    проще написать обычный текст
    -spt:"Первый канал (+1)"

    чтобы указать, что образец находится в конце строки, в регулярных выражениях пишут:
    -sre:"Первый канал$"

    Сразу я так и писал, но программа не отрабатывала, замен не было. Пришлось кавычки экранировать. Так же и в случае просто якоря $.
    Поэтому пришел к варианту:
    -sre:"Первый канал \(\+1\)\r?$" -t:"1 канал" -i -occ:1
    Так вроде всё нормально обрабатывается.

    программа nhrt заменяет всё заданное выражение поиска.

    Да, это я понял. Спасибо.

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

    Здравствуйте.
    В описании программы указано «..требуется установка файлов вручную»
    Подскажите, пожалуйста, как именно правильно скомпилировать, чтобы получился файл nhreplace.exe ?

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

      Здравствуйте, «требуется установка файлов вручную» означает, что нужно вручную распаковать исполняемые файлы из скачанного zip архива, положить в нужную папку, прописать путь в PATH.
      Компилировать не требуется. nhreplace.exe — это старое название программы, она была переименована в nhrt.exe, начиная с версии 2.9 https://nhutils.ru/blog/nhrt-v2-9-0/

      Ответить
      • 07.05.2019 в 19:13
        Постоянная ссылка

        Спасибо за ответ! И огромный респект за программу. Очень нужная утилита во многих случаях. Жаль, что мало кто о ней знает.
        Как раз собирался писать скрипт vbs для редактирования плейлистов и случайно натолкнулся на Вашу программу. Это то, что «доктор прописал»
        Скрипт получался огромным, во входном файле могло требоваться и до 1000 замен, а в коде для каждой замены 15 строк.
        В текстовом файле для параметра -list Вашей программы получается гораздо меньше.
        Но никак не могу разобраться как конкретно указать выражение, которое нужно заменить, чтобы замена шла только если будет найдено всё указанное выражение.
        Например в строках «Первый канал», «Первый канал HD», «Первый канал (+1), если не указывать -occ:1, поменяются все найденные вхождения. Но если указать так:
        -set:"Первый канал" -t:"1 канал" -i -occ:"1"
        -set:"Первый канал HD" -t:"1 канал HD" -i -occ:"1"
        -sre:"Первый канал \(\+1\)" -t:"1 канал (+1)" -i -occ:"1"

        то замена выполняется только во втором и третьем вхождении, первое почему то не изменяется.
        В разных плейлистах эти строки могут быть на разных местах, их нужно как-то конкретно указать.
        Пробовал добавлять конец строки (выражения для замены в плейлисте всегда в конце строки) так:
        -sre:"Первый канал \(\+1\)$" -t:"1 канал (+1)" -i -occ:"1"
        Но при этом замена не выполняется.
        Извините, может немного сумбурно объяснил. Вкратце: для замены нужно указать конкретное выражение, чтобы не трогать похожие.
        Можно ли так сделать, подскажите, пожалуйста ?

        Ответить
        • 07.05.2019 в 22:45
          Постоянная ссылка

          Вроде разобрался, не знаю насколько правильно, добавил в конец выражения для замены конструкцию с якорем \r?$
          Получилось так:
          -sre:"Первый канал\r?$" -t:"1 канал" -i -occ:1
          Вроде отрабатывает нормально.

          Ответить
          • 08.05.2019 в 01:22
            Постоянная ссылка

            чтобы замена шла только если будет найдено всё указанное выражение

            не очень понятно, что имеется в виду, потому что программа nhrt заменяет всё заданное выражение поиска. то ли подразумевается совпадение всей строки в файле со строкой поиска, то ли что-то другое…

            вообще, в списке надо поставить образцы в другом порядке, чтобы более короткая строка поиска была в списке последней и не срабатывала вместо более длинных:
            -set:"Первый канал HD" -t:"1 канал HD" -i -occ:"1"
            -sre:"Первый канал \(\+1\)" -t:"1 канал (+1)" -i -occ:"1"
            -set:"Первый канал" -t:"1 канал" -i -occ:"1"

            вместо регулярного выражения
            -sre:"Первый канал \(\+1\)"
            проще написать обычный текст
            -spt:"Первый канал (+1)"

            чтобы указать, что образец находится в конце строки, в регулярных выражениях пишут:
            -sre:"Первый канал$"
            здесь грамматика описывается TR1 Regular Expressions

            если конец строки указывать в обычном тексте, то для Windows можно сделать:
            -set:"Первый канал\r" -t:"1 канал\r"

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

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