sed在xml文件中追加字符串
嗨,我有一个sed在xml文件中追加字符串,xml,sed,append,Xml,Sed,Append,嗨,我有一个xml文件。我想在看到标记时添加以下标记。比如说 我想补充一点 <Context allowLinking="false" privileged="false" useHttpOnly="true" xmlValidation="false"> </Context> 文件看起来像这样 <Context> </Context> <Context allowLinking="false" privileged="false"
xml
文件。我想在看到标记时添加以下标记。比如说
我想补充一点
<Context
allowLinking="false"
privileged="false"
useHttpOnly="true"
xmlValidation="false">
</Context>
文件看起来像这样
<Context>
</Context>
<Context allowLinking="false"
privileged="false"
useHttpOnly="true"
xmlValidation="false">
</Context>
添加后应该是这样的
<Context>
</Context>
<Context allowLinking="false"
privileged="false"
useHttpOnly="true"
xmlValidation="false">
</Context>
我使用了下面的sed命令,但无法在标记中添加参数,如上所示
我尝试了以下方法
grep 'allowLinking' /bao/tomcat/conf/context.xml
if [ $? -ne 0 ]
then
sed -i '/<Context .*?>/i allowLinking="false" \n privileged="false" \n useHttpOnly="true" \n xmlValidation="false"/' /tmp/context.xml
fi
grep'allowLinking'/bao/tomcat/conf/context.xml
如果[$?-ne 0]
然后
sed-i'//i allowLinking=“false”\n privileged=“false”\n useHttpOnly=“true”\n xmlvalization=“false”//tmp/context.xml
fi
你能告诉我如何添加内容吗
谢谢
Dinesh您可以尝试:
sed -i 's/<Context *>/<Content allowLinking="false" \n privileged="false" \n useHttpOnly="true" \n xmlValidation="false">/' /tmp/context.xml
注意:迈克尔·凯在评论中指出: [这]之所以有效,是因为你很幸运:你的数据中没有像“符号”这样的特殊字符 对于Linux
sed
,需要注意的特殊字符是[\^$..&
,以及-]
后面的[
sed-E
添加了?+{}()
,请参阅。其他sed
可能包括更多字符
此外,如前所述,该示例不能包含单引号'
或正斜杠/
,除非它们由反斜杠\
转义。请注意,\n
用于引入换行符;此处可以使用反斜杠
最后,正如Micheal Kay所指出的,这不是sed的工作,而是sed的工作。当然,每个人都需要知道2009年的一个著名答案:。这不是sed的工作,而是XSLT的工作。这只是因为你很幸运:数据中没有像安培和这样的特殊字符。(有趣的是,在说它有效之前,您运行了多少个测试用例?)不要在生产中使用它,否则您很快就会发现“XML”的一个消费者询问StackOverflow如何处理格式错误的“XML”数据文件。