2014-01-07 3 views
0

Я пытаюсь найти и заменить значение чего-либо в текстовом файле, и мне трудно понять, как я это сделаю.Командная строка Windows: значение поиска и замены

Например, я хотел бы зайти в файл с именем android: versionName = "1.53" и заменить его на android: versionName = "1.54".

Я знаю, как это сделать, если я просто хочу заменить 1.53 на 1.54, например, используя программу FART (найти и заменить текст), но я хочу иметь возможность заменить все, что находится между речевыми знаками с 1.54 , т.е. без указания 1.53, поскольку это может меняться каждый раз.

Другой подобный пример заменит #define DLS_VERSION (1540) на #define DLS_VERSION (1600).

Мне просто интересно, есть ли стандартный способ или утилита для этого, пожалуйста?

Thanks, Chris.

+0

SED - редактор потоков, который редактирует текстовые файлы из командной строки с использованием регулярных выражений. Собственный пакетный файл Windows, который имеет аналогичную функциональность, является 'REPL.BAT' by dbenham из Stack Overflow. Они являются надежными методами, так как простые командные файлы могут быть ограничены составом файла, который нужно изменить. – foxidrive

ответ

0

Любая утилита поиска и замены регулярного выражения (регулярное выражение) должна работать нормально. Есть много бесплатных опций для Windows, хотя ни одна из них не является родной для партии.

Один хороший вариант: REPL.BAT - a hybrid JScript/batch utility, который работает на любом компьютере Windows с XP вперёд и не требует загрузки или установки любого исполняемого файла.

Предполагая REPL.BAT находится в текущем каталоге, или еще лучше, где-то в вашем PATH:

type "yourFile.txt"|repl "(android:versionName=\q).*?(\q)" "$11.54$2" x >"yourFile.txt.new" 
move /y "yourFile.txt.new" "yourFile.txt" >nul 

type "yourFile.txt"|repl "(#define DLS_VERSION \().*?(\))" "$11600$2" >"yourFile.txt.new" 
move /y "yourFile.txt.new" "yourFile.txt" >nul 

Полная документация вложена в сценарии REPL.BAT. Простой веб-поиск может найти множество сайтов, которые объясняют регулярные выражения.

+0

Ничего себе, спасибо dbenham, это прекрасно работает! –

+0

Извинения, я случайно отредактировал мой последний комментарий 5 раз, так что больше не мог редактировать. Ничего себе, спасибо dbenham, это прекрасно работает! Я думаю, что моя главная проблема заключалась в том, что я не мог придумать, что именно искать, т. Е. «Регулярные выражения» Всего несколько вопросов о синтаксисе вызовов repl.bat, если это нормально? Есть ли? часть просто означает, что между двумя кавычками? Является ли x перед частью stdout в примере 1, потому что мы используем символ цитаты в части поиска? Имеет ли значение \ (в примере 2 значение (?) (Оно, кажется, не указано в документации с \\, \ b и т. Д.) –

+0

@ChrisMoore - '?' Делает выражение '. *' Не жадным, это означает, что он прекращает сопоставление, как только он успешно соответствует следующему выражению (понятие трудно объяснить). Для включения синтаксиса '\ q' для цитаты требуется опция' X'. Текст между скобками фиксируется так, чтобы он могут быть указаны в строке замены. '\ (' и '\)' просто экранируются '(' и ')' символы, которые не записываются. Прочитайте документацию по регулярному выражению MicroSoft, доступную по ссылке, помещенной в документацию REPL Кроме того, не забудьте принять наилучший ответ, который соответствует вашим потребностям. – dbenham

Смежные вопросы