У меня есть файл Strings.xml, содержащий следующий код:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">myurl</string>
<string name="app_name">MyApp</string>
</resources>
Я хочу манипулировать значением myurl с помощью командной строки с заданным URL-адресом.
Команда, которую я использую, - это
sed s/myurl/http://192.168.1.1:8080/ strings.xml
Но это вызывает ошибку: sed: 1: "s/myurl/http://192.168....": bad flag в команде substitute: '/'
Это вызвано двумя косыми чертами (//). Любой способ передать значение команде sed?
Вы можете использовать другие разделители с sed, например !
:
sed 's!myurl!http://192.168.1.1:8080/!' strings.xml
(Уродливая) альтернатива заключается в том, чтобы избежать их:
sed 's/myurl/http:\/\/192.168.1.1:8080\//' strings.xml
Используйте \
перед всеми escape-символами.
xmlstarlet
или модуль на Python или Perl.