基本上,我有多个<video_preprocessors>
&amp;我的XML中的</video_preprocessors>
。我想删除第一个</video_preprocessors>
节点和第二个<video_preprocessors>
节点,我该如何实现呢?
</video_preprocessors>
<video_preprocessors>
<timecode_burnin>
<font_size>16</font_size>
<position>top_center</position>
<prefix/>
</timecode_burnin>
它位于<timecode_burnin>
这是完整的xml。
我想在</video_preprocessors> <video_preprocessors>
<timecode_burnin>
非常感谢。
答案 0 :(得分:0)
分析您的预期输出/结果我得出结论,它需要2个动作:
1 )将timecode_burnin
节点移至上一个兄弟节点video_preprocessors
2 )删除最初包含video_preprocessors
节点的“旧” timecode_burnin
节点
xmlstarlet ed -m "//video_preprocessors/timecode_burnin" \
"//video_preprocessors/timecode_burnin/../preceding-sibling::video_preprocessors" \
-d "//video_preprocessors[timecode_burnin]/following-sibling::video_preprocessors" test.xml
上述命令将输出预期结果。
处理后的关键片段:
...
<codec>h.264</codec>
<video_preprocessors>
<deinterlacer>
<algorithm>interpolate</algorithm>
<deinterlace_mode>Deinterlace</deinterlace_mode>
<force>false</force>
</deinterlacer>
<timecode_burnin>
<font_size>16</font_size>
<position>top_center</position>
<prefix/>
</timecode_burnin>
</video_preprocessors>
</video_description>
...
要修改文件 inplace - 添加全局-L
选项:
xmlstarlet ed -L -m ...