如何在匹配模式后立即将字符串路径插入文件行的中间?

时间:2015-07-05 18:43:53

标签: linux bash

我试图将存储在变量中的字符串路径作为属性值的第一部分插入到xmlfile中。

xmlfile是使用表单

的Tomcat的context.xml文件
<Context reloadable="true" docBase="application.war"> 
...
</Context>

路径,即要部署的war文件的绝对位置是

$WKSP_APATH="/location/on/server

$ WKSP PATH应插入如下

<Context reloadable="true" docBase="/location/on/server/application.war">
...
</Context>

我试图找到信息,但大多数资源都专注于全线插入。 这是为我的脚本添加的最后一行。

对于上下文,下面给出了执行行位置,作为嵌入

中的脚本的摘录
find /$SEARCH_PATH -name "*.xml" -type f|while read fname; do
    CONTEXT_FILE=${fname##*/}
    cp -rf "/$SEARCH_PATH/$CONTEXT_FILE" 
       "/$COPY_LOCATION/${PROJECT_CODENAME}-$CONTEXT_FILE"

    echo "Copied $CONTEXT_FILE to: 
        $COPY_LOCATION/$PROJECT_CODENAME-$CONTEXT_FILE for deployment"

    #do insert new path on local server here?

done

非常感谢

1 个答案:

答案 0 :(得分:2)

假设:

  • 您冒险使用正则表达式而不是正确的工具来解析xml文件。
  • FILE变量包含要处理的xml文件名。
  • WKSP_PATH变量包含您要在docBase属性的值中作为前缀插入的绝对位置。

尝试:

#!/bin/bash
WKSP_PATH="/location/on/server"
sed -i "s@docBase=\"@docBase=\"$WKSP_PATH/@" "$FILE"

检查结果:

cat "$FILE"
<Context reloadable="true" docBase="/location/on/server/application.war">
...
</Context>