从XML文件中提取标记和内容的第n个出现

时间:2017-10-25 05:04:18

标签: xml shell unix

我有一个包含此数据的XML文件:

<server>
    <servername>server1</servername>
    <userid>user1</userid>
    <passw>pass1</passw>
    <dbname>dbname1</dbname>
</server>
<server>
    <servername>server2</servername>
    <userid>user2</userid>
    <passw>pass2</passw>
    <dbname>dbname2</dbname>
</server>
<server>
    <servername>server3</servername>
    <userid>user3</userid>
    <passw>pass3</passw>
    <dbname>dbname3</dbname>
</server>
<server>
    <servername>server4</servername>
    <userid>user4</userid>
    <passw>pass4</passw>
    <dbname>dbname4</dbname>
</server>

我想从每个服务器的文件中提取信息。我要一起提取所有细节,但是如何提取服务器标签的n th 次?

1 个答案:

答案 0 :(得分:0)

如果XML文件的结构如此简单,并且您可以依赖于一致性,那么我可能会找到一个awk单行程序。例如:

cat servers.xml | awk -v n=3 '{ if ($1 == "<server>") i++; if (i == n) print $0 }'

会导致:

<server>
    <servername>server3</servername>
    <userid>user3</userid>
    <passw>pass3</passw>
    <dbname>dbname3</dbname>
</server>

调整 n = 3 以匹配您要提取的迭代次数。