Здравствуйте, уважаемые!
Начал освоение порта
утилиты sed под Win32 для решения нескольких тривиальных задач. И практически сразу столкнулся с проблемой (что, думаю, неудивительно). Чтение различных ресурсов и всевозможный поиск не помогает, а на глубокое изучение регулярных выражений (где, вероятно, есть ответ) нет времени. Прошу помощи!
Задача
Есть файл, содержащий следующую строку:
if file_getprop("/system/build.prop","ro.build.display.id")!="ROM v.6.0 beta" then
Необходимо с помощью командного файла Windows, с использованием sed найти эту строку и заменить часть
6.0 beta
на значение переменной, задаваемой при запуске командного файла, при этом указанная часть может быть любой длины, например,
6.0 alpha
и может не содержать буквенных символов, например,
6.0
. Для решения задачи в однострочном скрипте хотел использовать символ " (двойных кавычек), однако, в таком случае утилита работает не правильно.
Содержание командного файла:
@echo off
set MOD=d:\ROM\KITCHEN\MOD
set UnxUtils=d:\ROM\KITCHEN\TOOLS\UnxUtils\usr\local\wbin
set TEMP=d:\ROM\KITCHEN\TEMP
set /p ROMVER=Введите версию прошивки:
%UnxUtils%\sed.exe -e "/ROM/s/v\..*"/v.%ROMVER%"/g" %MOD%\META-INF\com\google\android\aroma-config > %TEMP%\aroma-config
move /y %TEMP%\aroma-config %MOD%\META-INF\com\google\android\aroma-config
pause
При использовании указанного кода, если исходная строка выглядит следующим образом:
if file_getprop("/system/build.prop","ro.build.display.id")!="ROM v.6.0 beta" then
а переменная ROMVER принимает значение равное
1.0
, то на выходе получаем следующее:
if file_getprop("/system/build.prop","ro.build.display.id")!="ROM v.1.0
что явно не соответствует ожидаемому. Насколько я понимаю, в UNIX реализации sed такой проблемы не возникает, т.к. скрипт sed заключается в одинарные кавычки и использование двойных в теле скрипта не приводит к таким последствиям...
Буду благодарен за любую помощь, спасибо!