【发布时间】:2026-01-10 00:25:01
【问题描述】:
你好,我研究了很多,但从未找到适合我需要的解决方案。
我要替换原来的xml行:
<access-log pattern="%h %l %u %t "%r" %s %b "%{i,Referer}" "%{i,User-Agent}" %T " prefix="access_${jboss.server.name}" suffix=".log"/>
修改后的 xml 行:
<access-log pattern="%h %l %u %t "%r" %s %b "%{i,Referer}" "%{i,User-Agent}" %T %{i,Proxy-Remote-User}" prefix="access_${jboss.server.name}" suffix=".log"/>
我尝试制作 2 个变量。这是我的脚本:
#!/bin/bash
MOD=`more /aplicaciones/users/t682213/alvaro/mod`
XML=`more /aplicaciones/users/t682213/alvaro/xml`
sed "s#$XML#$MOD#g" test2
但是我得到了像这样重复的东西:
/aplicaciones/users/t682213/alvaro$ sed "s#$XML#$MOD#g" test2
<access-log pattern="%h %l %u %t <access-log pattern="%h %l %u %t "%r" %s %b "%{i,Referer}" "%{i,User-Agent}" %T " prefix="access_${jboss.server.name}" suffix=".log"/>quot;%r<access-log pattern="%h %l %u %t "%r" %s %b "%{i,Referer}" "%{i,User-Agent}" %T " prefix="access_${jboss.server.name}" suffix=".log"/>quot; %s %b <access-log pattern="%h %l %u %t "%r" %s %b "%{i,Referer}" "%{i,User-Agent}" %T " prefix="access_${jboss.server.name}" suffix=".log"/>quot;%{i,Referer}<access-log pattern="%h %l %u %t "%r" %s %b "%{i,Referer}" "%{i,User-Agent}" %T " prefix="access_${jboss.server.name}" suffix=".log"/>quot; <access-log pattern="%h %l %u %t "%r" %s %b "%{i,Referer}" "%{i,User-Agent}" %T " prefix="access_${jboss.server.name}" suffix=".log"/>quot;%{i,User-Agent}<access-log pattern="%h %l %u %t "%r" %s %b "%{i,Referer}" "%{i,User-Agent}" %T " prefix="access_${jboss.server.name}" suffix=".log"/>quot; %T %{i,Proxy-Remote-User}" prefix="access_${jboss.server.name}" suffix=".log"/>
我需要帮助,我想用另一个非常复杂的字符串替换一个非常复杂的字符串。
【问题讨论】:
-
没有。不要在 XML 上使用正则表达式。使用 XML 解析器,然后根据需要替换节点属性。或者,您可以使用 XSLT,让我们编写一个树形转换器。