我有一个名为FILE.XML的文件
它看起来像这样
<File>${IB}/OP/views/ACCOUNT.xml</File>
<File>${IB}/OP/views/EMPLOYEES.xml</File
<File>${IB}/OP/views/STATUS.xml</File>
我需要使用xmlstarlet
来查看FILE.XML并确定是否存在ACCOUNT.xml的匹配项。如果存在,则在其下面追加两行,包括标记和完整路径,如下所示。
<File>${IB}/OP/views/ACCOUNT_MAIN.xml</File>
<File>${IB}/OP/views/ACCOUNT_SECONDARY.xml</File>
然后删除ACCOUNT.xml行
<File>${IB}/OP/views/ACCOUNT.xml</File>
所以我想出了一个删除行的方法,但不确定如何在删除之前或之后附加新的行。
这是我的删除命令。
xmlstarlet ed -L -d '//rules/File[contains(text(),"{IB}/OP/view/ACCOUNT.xml")]' ${HOME}/file.xml
FILE.xml中的最终结果应如下所示
<File>${IB}/OP/views/ACCOUNT_MAIN.xml</File>
<File>${IB}/OP/views/ACCOUNT_SECONDARY.xml</File>
<File>${IB}/OP/views/EMPLOYEES.xml</File
<File>${IB}/OP/views/STATUS.xml</File>
2条答案
按热度按时间pgpifvop1#
给定此输入,
这应该能达到你的目的
--var
定义命名变量,请参见xmlstarlet.txt
中的示例。如果T
变量不匹配任何内容,则不修改输入。tuwxkamq2#
输入
我会怎么做:
输出