Я хотел бы найти ссылки на версии SNAPSHOT в файле pom.xml. Давайте используем файл POM, расположенный здесь для примера. Я нашел следующую команду, чтобы найти элементы, содержащие строку SNAPSHOT:
$ xmlstarlet sel -t -m "//*[contains(text(), 'SNAPSHOT')]" -v . -n pom.xml
0.2-SNAPSHOT
4.12-SNAPSHOT
1.9.13-SNAPSHOT
20.0-SNAPSHOT
Это, однако, как можно видеть выше, дает мне только текст совпадений. То, что я хотел бы видеть, - это некоторый дополнительный контекст относительно местоположения совпадений, например, путь, ведущий к совпадающим элементам, например:
$ xmlstarlet magical arguments
/project/version: 0.2-SNAPSHOT
/project/dependencies/dependency: 4.12-SNAPSHOT
/project/properties/jackson.version: 1.9.13-SNAPSHOT
/project/properties/guava.version: 20.0-SNAPSHOT
В качестве альтернативы, урезанная версия XML в качестве вывода также будет работать для меня, например ::10000
$ xmlstarlet magical arguments
<project>
<version>0.2-SNAPSHOT</version>
<dependencies>
<dependency>
<version>4.12-SNAPSHOT</version>
</dependency>
</dependencies>
<properties>
<jackson.version>1.9.13-SNAPSHOT</jackson.version>
<guava.version>20.0-SNAPSHOT</guava.version>
</properties>
</project>
Можно ли распечатать один из этих или какой-либо другой вид указания того, где произошли совпадения?