大家好。我正在尝试编写一个编辑 xml 文件的脚本。不幸的是,文件中有相同的命名标签:
<phase1>
<ikeid>1</ikeid>
<iketype>ikev1</iketype>
<mode>main</mode>
<myid_type>myaddress</myid_type>
<myid_data/>
<peerid_type>peeraddress</peerid_type>
<peerid_data/>
<lifetime>28800</lifetime>
<pre-shared-key>lol</pre-shared-key>
</phase1>
<phase1>
<ikeid>2</ikeid>
<iketype>ikev1</iketype>
<mode>main</mode>
<myid_type>any</myid_type>
<myid_data/>
<peerid_type>address</peerid_type>
<peerid_data/>
<lifetime>20000</lifetime>
<pre-shared-key>lel</pre-shared-key>
</phase1>
我需要分别访问这两个“phase1” block 并使用 xmllint 编辑它们。简而言之,我想要这样的输出:
<phase1>
<ikeid>1</ikeid>
<iketype>ikev1</iketype>
<mode>main</mode>
<myid_type>myaddress</myid_type>
<myid_data/>
<peerid_type>peeraddress</peerid_type>
<peerid_data/>
<lifetime>28800</lifetime>
<pre-shared-key>lol</pre-shared-key>
</phase1>
<phase1>
<ikeid> I EDITTED THIS PART</ikeid>
<iketype>ikev1</iketype>
<mode>THIS IS ALSO EDITTED</mode>
<myid_type>any</myid_type>
<myid_data/>
<peerid_type>address</peerid_type>
<peerid_data/>
<lifetime>HELP</lifetime>
<pre-shared-key>lel</pre-shared-key>
</phase1>
谢谢。
最佳答案
我想通了。如下所示:
xmllint --shell file.xml
cd /some/path/phase1[ikeid='1']/lifetime
此命令到达包含“ikeid”值 1 的“phase1”的“lifetime”元素。
关于xml - 如何在 Linux 中解析相同命名的 XML 元素内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51383745/