I have a pom.xml, which i need to parse using shell to get the tag values and write it in to text file using ':' as a seperator
**XML:**
<dependency>
<groupId>com.dtd</groupId>
<artifactId>dtc-api-commons</artifactId>
<version>3.3.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.dtd</groupId>
<artifactId>dtc-api-commons</artifactId>
<version>3.3.1_1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.dtd</groupId>
<artifactId>dtc-api-commons</artifactId>
<version>3.3.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.dtd</groupId>
<artifactId>dtc-api-commons</artifactId>
<version>3.3.0-SNAPSHOT</version>
</dependency>
**Expected output:**
com.dtd:dtc-api-commons:3.3.2-SNAPSHOT
com.dtd:dtc-api-commons:3.3.1-SNAPSHOT
com.dtd:dtc-api-commons:3.3.1_1-SNAPSHOT
com.dtd:dtc-api-commons:3.3.0-SNAPSHOT请帮助我提供准确的shell命令来解析xml并使用以下分隔符以预期的格式写入值
发布于 2018-09-20 09:27:53
假设您将XML封装在根标记中,则可能是POM文件的<project>:
<project>
<dependency>
<groupId>com.dtd</groupId>
<artifactId>dtc-api-commons</artifactId>
<version>3.3.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.dtd</groupId>
<artifactId>dtc-api-commons</artifactId>
<version>3.3.1_1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.dtd</groupId>
<artifactId>dtc-api-commons</artifactId>
<version>3.3.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.dtd</groupId>
<artifactId>dtc-api-commons</artifactId>
<version>3.3.0-SNAPSHOT</version>
</dependency>
</project>您可以使用xmlstarlet:
xmlstarlet sel -T -t -m '//project/dependency' -v 'concat(groupId,":",artifactId,":",version)' -nl pom.xml
com.dtd:dtc-api-commons:3.3.2-SNAPSHOT
com.dtd:dtc-api-commons:3.3.1_1-SNAPSHOT
com.dtd:dtc-api-commons:3.3.1-SNAPSHOT
com.dtd:dtc-api-commons:3.3.0-SNAPSHOTsel:选择
-T:输出文本
-t:模板
-m:匹配xpath
-v:获取与:连接的所有3个节点的值
-nl:打印换行符
https://stackoverflow.com/questions/52419451
复制相似问题