2013-05-31 4 views
1

Я создаю скрипт script1.sh, через который я должен изменить содержимое xml файла (abc.xml). Содержимое XML-файла являютсяКак изменить содержимое файла в сценарии оболочки?

area = xyz/a 
url = "sqlserver://servername:portno/a" 
username="" 
password="" 

area = xyz/b 
url = "sqlserver://servername:portno/b" 
username="" 
password="" 

Я должен изменить servername, portno, username и password как для области, используя script1.sh. Servername и portno будут одинаковыми для обоих районов, но username и password будут отличаться. Так как я могу внести изменения от script1.sh к abc.xml

sed -i 's/$strurl/$url/g' context.sh 

Это, как я ищу, но не могу найти и изменить URL отдыха все в порядке. Я думаю, что строка url слишком велика для поиска.

+0

'awk' и' perl' оба, кажется, как разумные инструменты. Что вы пробовали? Откуда происходят замены, и как он узнает, с какого имени пользователя/пароля идет с какой областью? – Barmar

+1

Это не похоже на XML. Действительно ли вы размещаете содержимое файла? – Joni

+0

Я использовал sed, но все имя пользователя и пароль получают одинаковое значение. –

ответ

2

sed -i 's!$strurl!$url!g' filename

Это будет ответ, как URL сам содержит «/» в качестве разделителя, поэтому мы должны использовать другой разделитель внутри SED команды

0

Вы можете использовать sed с опцией -i, чтобы изменить файл на месте.

sed -i 's/what/towhat/g' filename.txt 

В случае, если ваш what содержит косой черты (/) сам по себе, можно использовать любой другой символ (е. Г. ,), который не появляется в what или towhat.

+0

Я знаю этот шаг, но я не могу искать и изменять URL-адрес с помощью этой команды, url слишком велик для поиска. –

+0

Ваш URL-адрес не был слишком большим для поиска. Вы можете использовать любой разделитель команд, если ваш URL содержит слэши ('/'). – Alfe

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