2017-02-13 4 views
0

У меня есть некоторые XML-файлы в папке, и я хочу, чтобы заменить путь, определенный в файлах с другой один, так что исходный файл содержит:Заменить строку с обратной косой черты

<Ruta MIMEType="application/pdf">\\srvfsrvivwsk02.preprod.corp\SDD\Cap_Incoming\example.pdf</Ruta> 

И результат должен быть:

<Ruta MIMEType="application/pdf">\\srvfsrvivwsk35.preprod.corp\SDD2\Cap2_Incoming\Incoming2\example.pdf</Ruta> 

Im пытается с помощью следующей команды, но он не работает:

a='\\srvfsrvivwsk02.preprod.corp\SDD\Cap_Incoming' 
b='\\srvfsrvivwsk35.preprod.corp\SDD2\Cap2_Incoming\Incoming2' 

sed -i 's/'$a'/'$b'/g' exaple.xml 

It кажется, обратная косая черта не работает должным образом. Не могли бы вы мне помочь?

+0

Проблема заключается в том, что это должно быть сделано в Linux скрипт и по расписанию, так как файлы будут прибывать каждый день – user3270648

ответ

0

Backslash избежит следующий символ, так что вы можете использовать два обратных слеша \\, чтобы соответствовать друг \

sed 's/\\\\srvfsrvivwsk02.preprod.corp\\SDD\\Cap_Incoming/\\\\srvfsrvivwsk35.preprod.corp\\SDD2\\Cap2_Incoming\\Incoming2/g' example.xml

+0

Он работал нормально, но теперь мне нужно использовать переменные: originalPath = \\\\ srvfsrvivwsk02.preprod.corp \\ SDD \\ Cap_Incoming targetPath = \\\\ srvfsrvivwsk35.preprod.corp \\ SDD2 \\ Cap2_Incoming \\ Incoming2 Любые идеи? sed 's/$ originalPath/$ targetPath/g' example.xml – user3270648

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