我有一个 xml 文件,其中path
在多个位置包含一些内容。
现在我想从.properties
提到的文件中获取值并替换path
xml 中存在的部分内容。
假设我有一个如下所示的 xml 文件。
<?xml version="1.0" encoding="ISO-8859-1"?>
...
...
<classpath>
<pathelement location="/profiles/sh/finalFolder/Apache/example.jar" />
</classpath>
<property name="executable" value="/profiles/sh/finalFolder/Apache/instjamr/install" />
<fileset dir="/profiles/sh/finalFolder/Apache/ant"/>
该 xml 文件/profiles/sh/finalFolder
在许多地方包含带有某些后缀的路径。
现在,我有一个path.properties
包含(键,值)对的文件,例如
FinalFolder=/new/final/exit
(用户可以随时在属性文件中编辑值)
我想将 替换为文件中提到的密钥path
值.properties
最终文件夹。
我需要在.sh
文件中编写代码来完成这项工作。
答案1
首先从文件中提取路径path.properties
:
newPath=`sed -n 's/FinalFolder=//p' path.properties`
然后用新路径替换旧路径(使用-
作为分隔符而不是/
使其更具可读性:
sed -i "s-/profiles/sh/finalFolder-$newPath-g" file.xml
在脚本中,我建议进行一些错误处理,以防文件中没有 FinalFolder 项目或其格式错误。