2017-02-13 150 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> 

使用以下命令我试着,但它不工作:

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

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

它似乎反斜杠不能按预期工作。你能帮我解决这个问题吗?

+0

的问题是,它需要在Linux脚本中完成和计划,因为文件将抵达每天 – user3270648

回答

0

反斜杠将难逃以下字符,所以你可以使用两个反斜杠\\匹配每个\

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